Menu
CoddyTech

Beim Aufprall zerbrechen

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 10 von 71.

Wie heftig war der Aufprall? collision.relativeVelocity gibt an, wie schnell sich die beiden Objekte im Moment des Aufpralls aufeinander zubewegten, und sein magnitude ist die Aufprallgeschwindigkeit in m/s. Es ist eine Differenz der Geschwindigkeiten: Ein Auto mit 10 m/s, das auf ein Auto auffährt, das mit 8 m/s in dieselbe Richtung fährt, prallt nur mit 2 m/s auf, und beide Autos sehen dieselbe Aufprallgeschwindigkeit.

Dieses Ei zerbricht, wenn es mit mehr als crackSpeed landet. Aus 1 m Höhe fallengelassen, trifft es mit etwa 4,4 m/s auf (die Quadratwurzel aus 2 x 9.81 x 1), aus 2 m Höhe mit etwa 6,3 m/s:

public float crackSpeed = 5f;

void OnCollisionEnter(Collision collision)
{
    if (collision.relativeVelocity.magnitude > crackSpeed)
    {
        Debug.Log("Splat!");
        Destroy(gameObject);
    }
}

Warum nicht die eigene rb.linearVelocity des Eis? Wenn OnCollisionEnter ausgeführt wird, hat die Physik den Aufprall bereits verarbeitet, sodass die Geschwindigkeit des Eis der danach verbleibende Wert ist, also nahe null. relativeVelocity behält die Geschwindigkeit des Aufpralls selbst bei. Es ist eine Geschwindigkeit, daher spielt die Masse keine Rolle: Ein schweres und ein leichtes Ei, die mit 6 m/s landen, melden beide denselben Wert von 6.

challenge icon

Aufgabe

Einfach

Schreibe Window.cs: Jeder Treffer schwächt das Fenster, und bei 0 zerbricht es.

  1. Ziehe in OnCollisionEnter des Fensters collision.relativeVelocity.magnitude von strength ab.
  2. Wenn strength <= 0f gilt, rufe Destroy(gameObject); auf.

Drücke „Spielen“, rolle mit dem Aufwärtspfeil sanfte Bälle und dann mit der Leertaste einen harten: Das Fenster zerbricht. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class Window : MonoBehaviour
{
    public float strength = 10f;

    // Jeder Treffer verringert strength um seine Aufprallgeschwindigkeit; bei 0 zerspringt das Fenster
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground