Menu
CoddyTech

Was habe ich getroffen?

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 9 von 63.

Die Collision, die Unity an OnCollisionEnter übergibt, beschreibt die andere Seite des Kontakts. collision.gameObject ist das Objekt, mit dem du zusammengestoßen bist, also ist collision.gameObject.name sein Name, und collision.gameObject.CompareTag("Hazard") fragt nach seinem Tag. (collision.collider ist der genaue Collider, den du berührt hast, wenn ein Objekt mehrere hat.)

Dieses Autoscooter-Auto protokolliert alles, mit dem es zusammenstößt, und beschwert sich über Gefahren:

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

Die erste Zeile, die es protokolliert, lautet Bumped into Floor, sobald das Spiel startet: Auch der Boden, auf dem es steht, verursacht eine Kollision. Ein Skript, das auf Treffer reagiert, fragt also immer zuerst, was es getroffen hat. Achte darauf, welches Objekt du benennst: CompareTag("Hazard") für sich allein fragt nach deinem eigenen Objekt, und Destroy(gameObject) zerstört dein eigenes Objekt, während Destroy(collision.gameObject) das Objekt entfernt, das du getroffen hast.

challenge icon

Aufgabe

Einfach

Fahre den Schneepflug mit den Pfeiltasten (bereits geschrieben) und gib ihm eine Aufgabe. Die beiden weißen Blöcke sind mit Snow markiert.

  • Wenn der Pflug auf ein Objekt trifft, das mit Snow markiert ist, zerstöre diesen Block, erhöhe einen Zähler um 1 und gib ihn im Protokoll aus: Cleared 1, Cleared 2.
  • Alles andere, was der Pflug berührt, einschließlich des Bodens und der Wand, bleibt an seinem Platz.

Drücke Play und räume die Straße frei, dann Check.

Probier es selbst

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);
    }

    // Schnee, auf den der Schneepflug trifft: zerstören, zählen und die Anzahl protokollieren
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Physik und Gameplay