Menu
CoddyTech

Invoke

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 22 di 71.

Invoke("Explode", 3f) chiama una volta il metodo Explode dello script stesso, tra 3 secondi, e il codice successivo prosegue subito. Unity trova il metodo tramite il suo nome, specificato come stringa, e il metodo non accetta parametri. Questa bomba esplode 3 secondi dopo l'avvio del gioco:

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

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

Poiché il nome è una stringa, il compilatore non può verificarlo. Invoke("Explod", 3f) viene compilato e, 3 secondi dopo, Unity registra Trying to Invoke method: Bomb.Explod couldn't be called. invece di far esplodere la bomba. nameof di C# risolve il problema: nameof(Explode) è la stringa "Explode", generata dal compilatore a partire da un nome che ha verificato; quindi, un errore di battitura al suo interno causa un errore di compilazione che vedi prima dell'avvio del gioco. Scrivi Invoke(nameof(Explode), 3f);.

challenge icon

Sfida

Facile

Fai crollare la piattaforma un istante dopo che il giocatore ci atterra.

  1. In OnCollisionEnter, quando collision.gameObject.CompareTag("Player"), chiama Invoke(nameof(Fall), delay);.
  2. Aggiungi void Fall(): imposta body.isKinematic = false; e registra Crumble!.

Premi «Gioca» e cammina sulla piattaforma: un secondo dopo, cade. Poi premi «Verifica».

Provalo tu

using UnityEngine;

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

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

    void OnCollisionEnter(Collision collision)
    {
        // Quando il giocatore atterra: fai cadere la piattaforma dopo delay secondi
    }

    // Fall(): attiva la fisica della piattaforma e scrivi Crumble! nel log
}

Tutte le lezioni di Fisica e gameplay

Esercitati da solo: Playground Unity