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.
Wyzwanie
ŁatwyPł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, potemPressed 2i 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, ...
}
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