Menu
CoddyTech

W co uderzyłem?

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

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ś, gdy obiekt ma ich kilka.)

Ten samochodzik zderzakowy zapisuje w logu wszystko, w co uderzy, i narzeka na zagrożenia:

void OnCollisionEnter(Collision collision)
{
    Debug.Log("Bumped into " + collision.gameObject.name);
    if (collision.gameObject.CompareTag("Hazard"))
    {
        Debug.Log("Ouch!");
    }
}

Pierwszy wiersz zapisany w logu 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 nazywasz: samo CompareTag("Hazard") sprawdza tag twojego obiektu, a Destroy(gameObject) niszczy twój obiekt, natomiast Destroy(collision.gameObject) usuwa obiekt, w który uderzyłeś.

challenge icon

Wyzwanie

Łatwy

Przypisz pługowi zadanie: usuwaj bloki oznaczone tagiem Snow.

  1. Dodaj do Plow metodę void OnCollisionEnter(Collision collision), która działa tylko wtedy, gdy collision.gameObject.CompareTag("Snow").
  2. Wewnątrz wywołaj Destroy(collision.gameObject);, zwiększ pole cleared o 1 i wyświetl w logu "Cleared " + cleared.

Naciśnij „Graj” i wjedź w śnieg: każdy blok zniknie, a konsola zliczy usunięte bloki. Następnie naciśnij „Sprawdź”.

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 najeżdża pług: usuń go, policz i zapisz liczbę usuniętych obiektów w dzienniku
}

Wszystkie lekcje w sekcji Fizyka i rozgrywka

Poćwicz samodzielnie: Edytor online Unity