Gravità e massa
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 1 di 71.
Un componente Rigidbody affida il suo oggetto alla fisica di Unity, proprio come quando ne hai aggiunto uno in Add a Component. Da quel momento, la gravità accelera l’oggetto di 9.81 m/s ogni secondo e il Rigidbody ha le impostazioni che determinano come. Due di queste sono mass, in chilogrammi (1 per un nuovo Rigidbody), e useGravity (attivo per un nuovo Rigidbody).
La massa non cambia la velocità con cui cadono gli oggetti. La gravità tira più forte un corpo pesante, ma è altrettanto più difficile accelerarlo, quindi una cassa da 1 kg e un’incudine da 50 kg lasciate cadere dalla stessa altezza atterrano nello stesso fotogramma. La massa conta quando i corpi si spingono a vicenda: l’incudine sposta la cassa, mentre la cassa muove a malapena l’incudine. Questo palloncino da festa ha una massa ridotta e la gravità non agisce su di lui, quindi resta sospeso nel punto in cui la scena lo ha posizionato:
void Start()
{
Rigidbody rb = GetComponent<Rigidbody>();
rb.mass = 0.2f;
rb.useGravity = false;
}Con useGravity disattivato, il palloncino mantiene comunque la sua massa e si muove comunque quando qualcosa lo urta: è solo la gravità a smettere di tirarlo. Impostalo di nuovo su true e la gravità tornerà ad agire da qualsiasi punto si trovi l’oggetto. Nella fisica di Unity non c’è nemmeno aria, quindi una piuma cade come un mattone, a meno che tu non assegni al suo Rigidbody un po’ di smorzamento lineare.
Sfida
FacileAppendi le due casse, poi falle cadere insieme premendo Space.
- In
Start(), sotto la rigaGetComponent, impostarb.mass = weight;erb.useGravity = false;. - In
Update(), alla pressione diInput.GetKeyDown(KeyCode.Space), impostarb.useGravity = true;.
Premi «Gioca» e premi Space: la pesante Safe e il leggero Box atterrano insieme. Poi premi «Verifica».
Provalo tu
using UnityEngine;
public class CraneLoad : MonoBehaviour
{
public float weight = 1f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
// Imposta la massa su weight e impedisci alla gravità di attirare l'oggetto
}
void Update()
{
// Space: lascia che la gravità attiri di nuovo l'oggetto
}
}
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 rovescia7Rotazione
Angoli di EuleroQuaternioniGuarda nella direzione in cui ti muoviRuota in modo fluidoRiepilogo: Torretta10Progetto: Fuga dall'arena
L'arenaCacciatori2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliereEsercitati da solo: Playground Unity