Creare Videogiochi - Game Developer
Aiuto pong rimbalzo palla - Versione stampabile

+- Creare Videogiochi - Game Developer (https://www.making-videogames.net/giochi)
+-- Forum: Unity3D Italia (https://www.making-videogames.net/giochi/Forum-Unity3D-Italia)
+--- Forum: Richieste di Aiuto per Unity 3D (https://www.making-videogames.net/giochi/Forum-Richieste-di-Aiuto-per-Unity-3D)
+--- Discussione: Aiuto pong rimbalzo palla (/thread-Aiuto-pong-rimbalzo-palla)



Aiuto pong rimbalzo palla - samuele55598@gmail.com - 16-04-2017

Salve a tutti, buona pasqua, sto cercando di creare pong, ma la mia pila di problemi ha ora come primo elemento, la palla che ha un comportamento insolito (non sarebbe la prima volta con unity2d -_-) allora considerando che la palla ha un physics material con bounciness=1 e friction=0, angular drag del rb a 0, la palla quando inizia il gioco viene spinta via script e rimbalza qua e la come dovrebbe. Quando tuttavia arriva all'angolo in alto o quello in basso scorre rimanendo attaccata ad esso, tuttavia nello script ho inserito:

Codice:
private void OnCollisionEnter2D(Collision2D collision)
   {
       rb.AddForce(new Vector2(0, Random.Range(minYVariation, maxYVariation)));
   }

facendo così che quando collide si muove in alto o in basso con una certa imprevedibilità ma ciò non accade, ripeto quando tocca specificamente i confini in alto e in basso e sono identici agli altri 2 laterali, non me ne riesco a spiegare il motivo [Immagine: 2cpw0o9.png]


RE: Aiuto pong rimbalzo palla - carloss - 17-04-2017

Da quello che scrivi le premesse non sono buone. Ti consiglio di studiarti un po' di trigonometria, vettori( spazio bidimensionale) e fisica di base (velocità, accelerazione) oltre a leggerti la documentazione di Unity.

Nello script passi come parametro un vettore 2d dove la componente X vale sempre 0, quindi aggiungi una forza verticale. Inoltre la "pallina" avendo una forma quadrata e friction pari a 0, quando tocca il lato comincia a scivolare.

Secondo il mio parere dovesti usare una fisica completamente custom, mantenere il modulo della velocità costante e variare il vettore velocità in base all'angolo di incidenza. Ti può tornare utile il metodo Vector2.Reflection.