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.
Aufgabe
EinfachSchreibe Window.cs: Jeder Treffer schwächt das Fenster, und bei 0 zerbricht es.
- Ziehe in
OnCollisionEnterdes Fensterscollision.relativeVelocity.magnitudevonstrengthab. - Wenn
strength <= 0fgilt, rufeDestroy(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
1Rigidbody
Schwerkraft und MasseMit AddForce schiebenMit einem Impuls springenFixedUpdate für PhysikGeschwindigkeitKinematische KörperRückblick: Startrampe4Coroutinen
AufrufenWiederholt aufrufen, Aufruf abbrechenDeine erste CoroutineSchleifen in CoroutinenCoroutinen beendenRückblick: Countdown10Projekt: Arena-Flucht
Die ArenaJäger2Kollisionen
OnCollisionEnterWas habe ich getroffen?Beim Aufprall zerbrechenAuf dem Boden stehenAbprallen und ReibungCollider-FormenRückblick: Zerstörbare Wand5Projekt: Münzrausch
Der rollende BallMünzen zum Einsammeln11Abschließende Herausforderungen
KanonenreichweiteBewegliche ZieleMurmelgolfIns LochEscape RoomDie TürÜbe selbstständig: Unity-Playground