Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Pił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 strength osią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
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka