Menu
CoddyTech

OnCollisionEnter

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 8 z 63.

Gdy dwa kolidery zaczynają się stykać, Unity wywołuje OnCollisionEnter(Collision collision) w skryptach obu obiektów. Wywołuje tę metodę raz, podczas kroku fizyki, w którym zaczyna się kontakt, i nie wywołuje jej ponownie, dopóki obiekty pozostają w kontakcie. Aby w ogóle doszło do kolizji, co najmniej jeden z obiektów musi mieć komponent Rigidbody poruszany przez fizykę: ściana i podłoga bez Rigidbody nie zgłoszą sobie nawzajem żadnego zdarzenia.

Ta skrzynia zapisuje w logu informację, gdy ląduje. Ma komponent Rigidbody, więc spada, a komunikat pojawia się w kroku, w którym styka się z podłogą:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Thud!");
}

Skrzynia zapisuje komunikat w logu raz, a następnie ponownie dopiero wtedy, gdy oderwie się od podłogi i wyląduje po raz drugi. Podłoga również otrzymuje komunikat: skrypt na niej wykryje lądowanie skrzyni, mimo że podłoga nie ma komponentu Rigidbody. Nazwa i parametr muszą być dokładne. Metoda o nazwie onCollisionEnter nigdy nie zostanie wywołana i nie pojawi się żaden błąd. Jeśli metoda przyjmuje Collider, Unity zapisze w logu Script error: OnCollisionEnter z komunikatem This message parameter has to be of type: Collision i zignoruje metodę. Gdy obiekty pozostają w kontakcie, Unity wywołuje OnCollisionStay w każdym kroku fizyki, a gdy przestają się stykać — raz wywołuje OnCollisionExit.

challenge icon

Wyzwanie

Łatwy

Płyta naciskowa zlicza to, co na nią spada. Płyta nie ma komponentu Rigidbody; skrzynia nad nią ma taki komponent i spada na płytę.

  • Za każdym razem, gdy coś zaczyna dotykać płyty, dodaj 1 do licznika i zapisz to w konsoli: Pressed 1, potem Pressed 2 i tak dalej.
  • Coś, co spoczywa na płycie, liczy się raz, niezależnie od tego, jak długo tam pozostaje.

Naciśnij Play i obserwuj konsolę, a potem Check.

Spróbuj swoich sił

using UnityEngine;

public class PressurePlate : MonoBehaviour
{
    // Policz każde lądowanie i zapisz je w logu: Pressed 1, Pressed 2, ...
}
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