Menu
CoddyTech

Invoquer

Fait partie de la section Physique et gameplay du Journey Unity de Coddy. Leçon 22 sur 71.

Invoke("Explode", 3f) appelle une fois la méthode propre au script Explode, dans 3 secondes, et le code qui suit s’exécute immédiatement. Unity trouve la méthode à partir de son nom, fourni sous forme de chaîne, et la méthode ne prend aucun paramètre. Cette bombe explose 3 secondes après le démarrage du jeu :

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

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

Comme le nom est une chaîne, le compilateur ne peut pas le vérifier. Invoke("Explod", 3f) est compilé, et 3 secondes plus tard, Unity affiche Trying to Invoke method: Bomb.Explod couldn't be called. au lieu de provoquer l’explosion. nameof en C# corrige cela : nameof(Explode) est la chaîne "Explode", générée par le compilateur à partir d’un nom qu’il a vérifié ; une faute de frappe à l’intérieur provoque donc une erreur de compilation, que vous voyez avant le lancement du jeu. Écrivez Invoke(nameof(Explode), 3f);.

challenge icon

Défi

Facile

Fais s’effondrer la plateforme un instant après que le joueur a atterri dessus.

  1. Dans OnCollisionEnter, lorsque collision.gameObject.CompareTag("Player"), appelle Invoke(nameof(Fall), delay);.
  2. Ajoute void Fall() : définis body.isKinematic = false; et consigne Crumble!.

Appuie sur « Jouer » et marche sur la plateforme : une seconde plus tard, elle tombe. Puis appuie sur « Vérifier ».

Essayez vous-même

using UnityEngine;

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

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

    void OnCollisionEnter(Collision collision)
    {
        // Quand le joueur atterrit : faire tomber la plateforme delay secondes plus tard
    }

    // Fall() : activer la physique de la plateforme et afficher Crumble! dans le journal
}

Toutes les leçons de Physique et gameplay

Entraînez-vous par vous-même : Playground Unity