Menu
CoddyTech

La palla rotolante

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 28 di 71.

Questo capitolo consiste nel creare un piccolo gioco, Coin Rush. Fai rotolare una palla in un’arena delimitata da muri usando le frecce e raccogli monete prima che il tempo scada. Due script si dividono il lavoro, proprio come farebbero in un progetto Unity: Ball muove la palla e tiene il punteggio e il tempo, mentre Coin si trova su ogni moneta. Coin.cs inizia come classe vuota e la lezione successiva la completa.

Una palla rotola quando la spingi invece di spostarla direttamente. Spingi il suo Rigidbody con AddForce e lascia che ruoti liberamente: la forza muove la palla, mentre l’attrito del pavimento fa presa sulla parte inferiore e la mette in rotazione. Questa palla da bowling rotola lungo la pista mentre tieni premuto Space:

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à divisa per il 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 rotazione nei vincoli del Rigidbody: scivolerà come un disco da hockey senza girare. Una semplice sfera di un solo colore appare uguale in entrambi i casi: per vedere la rotazione, osserva Angular Velocity nella sezione Info del Rigidbody mentre il gioco è in esecuzione.

challenge icon

Sfida

Medio

Avvia Coin Rush: fai rotolare la palla con le frecce.

  1. In Ball.cs, in Start(), imposta rb = GetComponent<Rigidbody>();.
  2. In FixedUpdate(), leggi float x = Input.GetAxis("Horizontal"); e float z = Input.GetAxis("Vertical");, poi chiama rb.AddForce(new Vector3(x, 0f, z) * force);.

Premi «Gioca», fai clic sul gioco e fai rotolare la palla: gira mentre si muove. Poi premi «Verifica».

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.
    }
}

Tutte le lezioni di Fisica e gameplay

Esercitati da solo: Playground Unity