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.
Sfida
FacileIl 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
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere