Menu
CoddyTech

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ś.

challenge icon

Wyzwanie

Łatwy

Steruj 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
}
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