Menu
CoddyTech

La palla rotolante

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 27 di 63.

In questo capitolo realizzerai un piccolo gioco, Coin Rush. Fai rotolare una palla in un’arena con pareti usando le frecce e raccogli le monete prima che scada il tempo. Due script si dividono il lavoro, come farebbero in un progetto Unity: Ball muove la palla e gestisce il punteggio e il tempo, mentre Coin si trova su ogni moneta. Coin.cs inizia come classe vuota e la lezione successiva la completerà.

Una palla rotola quando la spingi invece di spostarla direttamente. Spingi il suo Rigidbody con AddForce e lascia libera la sua rotazione: la forza muove la palla e l’attrito del pavimento fa presa sulla parte inferiore della palla e la fa girare. Questa palla da bowling rotola lungo la sua corsia mentre tieni premuto Spazio:

public float push = 6f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

Una palla che rotola senza slittare gira a una velocità pari alla sua velocità lineare divisa per il suo raggio, quindi una palla con raggio 0.5 che si muove a 3 unità al secondo gira a 6 radianti al secondo (rb.angularVelocity). Modifica invece il suo transform.position oppure blocca la sua rotazione in Constraints del Rigidbody: scivolerà come un disco da hockey senza girare. Una semplice sfera di un solo colore sembra uguale in entrambi i casi: per vedere il rotolamento, osserva Velocità angolare nella sezione Info del Rigidbody mentre il gioco è in esecuzione.

challenge icon

Sfida

Medio

Avvia Coin Rush con la palla. Nell’Inspector, assegna a Ball una force di 10.

  • In Start(), memorizza il Rigidbody della palla in rb.
  • In FixedUpdate(), spingi la palla con le frecce: Input.GetAxis("Horizontal") lungo x e Input.GetAxis("Vertical") lungo z, entrambe moltiplicate per force.
  • Lascia libera la rotazione, così potrà rotolare.

Per ora, lascia Coin.cs così com’è. Premi Play, fai clic sul gioco e rotola per l’arena, poi premi Check.

Provalo tu

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // Spingi la palla con i tasti freccia: Horizontal lungo x, Vertical lungo z.
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fisica e gameplay