Rompersi all'impatto
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 10 di 63.
Quanto è stato forte l'urto? collision.relativeVelocity indica la velocità con cui i due oggetti si stavano avvicinando nel momento in cui si sono scontrati, e il suo magnitude è la velocità dell'impatto in m/s. È una differenza tra velocità: un'auto a 10 m/s che urta un'auto che viaggia nella stessa direzione a 8 m/s colpisce a soli 2 m/s, ed entrambe le auto rilevano la stessa velocità d'impatto.
Questo uovo si rompe quando atterra a una velocità superiore a crackSpeed. Se lasciato cadere da 1 m, colpisce a circa 4.4 m/s (la radice quadrata di 2 x 9.81 x 1), e da 2 m a circa 6.3 m/s:
public float crackSpeed = 5f;
void OnCollisionEnter(Collision collision)
{
if (collision.relativeVelocity.magnitude > crackSpeed)
{
Debug.Log("Splat!");
Destroy(gameObject);
}
}Perché non usare rb.linearVelocity dell'uovo? Quando viene eseguito OnCollisionEnter, la fisica ha già gestito l'urto, quindi la velocità dell'uovo è quella che resta dopo l'impatto, vicina a zero. relativeVelocity conserva la velocità dell'impatto stesso. È una velocità, quindi la massa non conta: un uovo pesante e uno leggero che atterrano a 6 m/s riportano entrambi lo stesso valore, 6.
Sfida
FacileLa palla rotola verso la finestra: la freccia su la fa rotolare piano, mentre la barra spaziatrice la fa rotolare forte (Bowler.cs, già scritto). Scrivi Window.cs. La finestra ha una strength (10 nell’Inspector).
- Ogni colpo indebolisce la finestra in base alla sua velocità d’impatto: un colpo a 2 m/s sottrae 2 a
strength. - Quando
strengthraggiunge 0 o meno, la finestra si frantuma: distruggi la finestra.
Premi Play, fai rotolare alcune palle piano e poi una forte, quindi premi Check.
Provalo tu
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// Ogni colpo sottrae la propria velocità d'impatto da strength; a 0 la finestra va in frantumi
}
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