Beim Aufprall zerbrechen
Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 10 von 63.
Wie heftig war der Aufprall? collision.relativeVelocity gibt an, wie schnell sich die beiden Objekte im Moment ihrer Kollision aufeinander zubewegt haben, und sein magnitude ist die Aufprallgeschwindigkeit in m/s. Es handelt sich um eine Geschwindigkeitsdifferenz: Ein Auto mit 10 m/s, das auf ein Auto auffährt, das in dieselbe Richtung mit 8 m/s fährt, prallt nur mit 2 m/s auf, und beide Autos messen dieselbe Aufprallgeschwindigkeit.
Dieses Ei zerbricht, wenn es mit mehr als crackSpeed aufkommt. Aus 1 m Höhe fallen gelassen, trifft es mit etwa 4.4 m/s auf (der 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, daher entspricht die Geschwindigkeit des Eis dem, was danach übrig ist – fast 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.
Aufgabe
EinfachDer Ball rollt auf das Fenster zu: Der Aufwärtspfeil lässt ihn sanft rollen, die Leertaste kräftig (Bowler.cs, bereits geschrieben). Schreibe Window.cs. Das Fenster hat eine strength (10 im Inspector).
- Jeder Treffer schwächt das Fenster um seine Aufprallgeschwindigkeit: Ein Treffer mit 2 m/s zieht 2 von
strengthab. - Wenn
strength0 oder weniger erreicht, zerbricht das Fenster: Zerstöre das Fenster.
Drücke Play, lass ein paar Bälle sanft und danach einen kräftig rollen und klicke dann auf Check.
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
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Physik und Gameplay
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand