Menu
CoddyTech

Spingi con AddForce

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

Una volta che un oggetto ha un Rigidbody, la fisica lo muove, quindi smetti di cambiarne la posizione e spingilo invece. rb.AddForce(force) spinge il corpo con una forza, un Vector3 misurato in newton. Una forza non imposta una velocità: accelera il corpo finché continui ad applicarla, con un incremento pari alla forza divisa per la massa ogni secondo. Smetti di spingere e il corpo mantiene la velocità che ha.

Questo hovercraft (2 kg) ha un propulsore: mentre tieni premuta la freccia su, una forza di thrust lo spinge in avanti, lungo +z. Con una spinta di 12, guadagna 12 / 2 = 6 m/s ogni secondo:

public float thrust = 12f;
private Rigidbody rb;

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

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

Le forze vanno in FixedUpdate(), che Unity chiama prima di ogni passaggio fisico, 50 volte al secondo (la lezione 4 spiega perché). Nella riga non c'è Time.deltaTime: AddForce distribuisce già la forza nel corso del passaggio e moltiplicarla per Time.deltaTime renderebbe la spinta 50 volte più debole. A terra, l'attrito spinge in senso contrario, quindi una forza ridotta potrebbe non riuscire a muovere affatto una scatola pesante.

challenge icon

Sfida

Facile

Il disco sulla pista di ghiaccio ha un Rigidbody e il ghiaccio non ha attrito. Spingilo con le frecce: l'asse Horizontal lo spinge lungo x e l'asse Vertical lungo z, con una forza pari a push (4 nell'Inspector).

Spingilo solo con le forze, così continuerà a scivolare quando lasci i comandi. Premi Play, guida il disco sulla pista, poi premi Check.

Provalo tu

using UnityEngine;

public class PuckPusher : MonoBehaviour
{
    public float push = 4f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // Spingi il disco: 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