W co uderzyłem?
Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 9 z 63.
Obiekt Collision, który Unity przekazuje do OnCollisionEnter, opisuje drugą stronę kontaktu. collision.gameObject to obiekt, w który uderzyłeś, więc collision.gameObject.name to jego nazwa, a collision.gameObject.CompareTag("Hazard") sprawdza jego tag. (collision.collider to dokładnie ten collider, którego dotknąłeś, jeśli obiekt ma ich kilka.)
Ten samochodzik zderzakowy rejestruje wszystko, w co uderzy, i skarży się na zagrożenia:
void OnCollisionEnter(Collision collision)
{
Debug.Log("Bumped into " + collision.gameObject.name);
if (collision.gameObject.CompareTag("Hazard"))
{
Debug.Log("Ouch!");
}
}Pierwszy wiersz, który rejestruje, to Bumped into Floor, w chwili rozpoczęcia gry: podłoga, na której stoi, również powoduje kolizję. Dlatego skrypt reagujący na uderzenia zawsze najpierw sprawdza, w co uderzył. Zwróć uwagę, który obiekt wskazujesz: samo CompareTag("Hazard") sprawdza tag twojego obiektu, a Destroy(gameObject) niszczy twój obiekt, podczas gdy Destroy(collision.gameObject) usuwa obiekt, w który uderzyłeś.
Wyzwanie
ŁatwySteruj pługiem śnieżnym za pomocą strzałek (kod jest już napisany) i przydziel mu zadanie. Dwa białe bloki mają tag Snow.
- Gdy pług uderzy w obiekt z tagiem
Snow, zniszcz ten blok, zwiększ licznik o 1 i wyświetl komunikat:Cleared 1,Cleared 2. - Wszystko inne, czego dotknie pług, w tym podłoże i ściana, pozostaje na swoim miejscu.
Naciśnij Play i oczyść drogę, a następnie kliknij Check.
Spróbuj swoich sił
using UnityEngine;
public class Plow : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
private int cleared;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, 0);
}
// Śnieg, na który natrafia pług: zniszcz go, zlicz i zapisz liczbę w dzienniku
}
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