Rozbijanie przy zderzeniu
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 10 z 63.
Jak mocne było uderzenie? collision.relativeVelocity określa, jak szybko dwa obiekty zbliżały się do siebie w chwili zderzenia, a jego magnitude to prędkość uderzenia w m/s. Jest to różnica prędkości: samochód jadący z prędkością 10 m/s, który uderza w samochód jadący w tym samym kierunku z prędkością 8 m/s, uderza z prędkością zaledwie 2 m/s, a oba samochody odnotowują tę samą prędkość uderzenia.
To jajko pęka, gdy ląduje z prędkością większą niż crackSpeed. Upuszczone z wysokości 1 m uderza z prędkością około 4.4 m/s (pierwiastek kwadratowy z 2 x 9.81 x 1), a z wysokości 2 m — z prędkością około 6.3 m/s:
public float crackSpeed = 5f;
void OnCollisionEnter(Collision collision)
{
if (collision.relativeVelocity.magnitude > crackSpeed)
{
Debug.Log("Splat!");
Destroy(gameObject);
}
}Dlaczego nie użyć własnego rb.linearVelocity jajka? Gdy wywoływana jest metoda OnCollisionEnter, fizyka zdążyła już obsłużyć uderzenie, więc prędkość jajka to ta, która pozostała po uderzeniu — bliska zeru. relativeVelocity zachowuje prędkość samego uderzenia. Jest to prędkość, więc masa nie ma znaczenia: ciężkie i lekkie jajko lądujące z prędkością 6 m/s zgłasza tę samą wartość 6.
Wyzwanie
ŁatwyPiłka toczy się w stronę okna: strzałka w górę toczy ją delikatnie, a Spacja mocno (Bowler.cs, już napisany). Napisz Window.cs. Okno ma strength (10 w Inspectorze).
- Każde uderzenie osłabia okno o wartość odpowiadającą jego prędkości: uderzenie z prędkością 2 m/s odejmuje 2 od
strength. - Gdy
strengthosiągnie 0 lub mniej, okno rozbija się: zniszcz okno.
Naciśnij Play, stocz kilka lekkich piłek, a potem jedną mocną, a następnie Check.
Spróbuj swoich sił
using UnityEngine;
public class Window : MonoBehaviour
{
public float strength = 10f;
// Każde uderzenie zmniejsza strength o swoją prędkość uderzenia; przy 0 szyba się rozbija
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Fizyka i rozgrywka
1Ciało sztywne
Grawitacja i masaPopychanie za pomocą AddForceSkok z impulsemFixedUpdate dla fizykiPrędkośćCiała kinematycznePowtórka: platforma startowa2Kolizje
OnCollisionEnterW co uderzyłem?Rozbijanie przy zderzeniuStanie na podłożuOdbicie i tarcieKształty colliderówPodsumowanie: Zniszczalny mur