Menu
CoddyTech

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.

challenge icon

Sfida

Facile

La 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 strength raggiunge 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
}
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