Menu
CoddyTech

Aufrufen

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 22 von 71.

Invoke("Explode", 3f) ruft die eigene Methode des Skripts Explode einmal in 3 Sekunden auf, und der Code danach wird sofort weiter ausgeführt. Unity findet die Methode anhand ihres Namens, der als Zeichenkette angegeben wird, und die Methode nimmt keine Parameter entgegen. Diese Bombe explodiert 3 Sekunden nach Spielstart:

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

Da der Name eine Zeichenkette ist, kann der Compiler ihn nicht überprüfen. Invoke("Explod", 3f) wird kompiliert, und 3 Sekunden später protokolliert Unity Trying to Invoke method: Bomb.Explod couldn't be called., anstatt die Bombe explodieren zu lassen. C#'s nameof behebt das: nameof(Explode) ist die Zeichenkette "Explode", die der Compiler aus einem überprüften Namen erstellt. Ein Tippfehler darin führt also zu einem Kompilierfehler, den du siehst, bevor das Spiel läuft. Schreibe Invoke(nameof(Explode), 3f);.

challenge icon

Aufgabe

Einfach

Lass die Plattform kurz nachdem der Spieler darauf gelandet ist einstürzen.

  1. Rufe in OnCollisionEnter, wenn collision.gameObject.CompareTag("Player") zutrifft, Invoke(nameof(Fall), delay); auf.
  2. Füge void Fall() hinzu: Setze body.isKinematic = false; und gib Crumble! aus.

Drücke auf „Spielen“ und gehe auf die Plattform: Eine Sekunde später fällt sie herunter. Drücke dann auf „Prüfen“.

Probier es selbst

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // Wenn der Spieler landet: Lass die Plattform nach delay Sekunden fallen
    }

    // Fall(): Aktiviere die Physik der Plattform und protokolliere Crumble!
}

Alle Lektionen in Physik und Gameplay

Übe selbstständig: Unity-Playground