Menu
CoddyTech

Invocar

Parte da seção Física e Jogabilidade do Journey de Unity da Coddy. Lição 22 de 71.

Invoke("Explode", 3f) chama o próprio método do script Explode uma vez, daqui a 3 segundos, e o código seguinte continua imediatamente. O Unity encontra o método pelo nome, fornecido como uma string, e o método não recebe parâmetros. Esta bomba explode 3 segundos após o início do jogo:

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

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

Como o nome é uma string, o compilador não pode verificá-lo. Invoke("Explod", 3f) compila, e 3 segundos depois o Unity registra Trying to Invoke method: Bomb.Explod couldn't be called. em vez de explodir. O nameof do C# resolve isso: nameof(Explode) é a string "Explode", criada pelo compilador a partir de um nome que ele verificou; assim, um erro de digitação nela causa um erro de compilação que você vê antes de o jogo ser executado. Escreva Invoke(nameof(Explode), 3f);.

challenge icon

Desafio

Fácil

Faça a plataforma desmoronar um instante depois que o jogador aterrissar nela.

  1. Em OnCollisionEnter, quando collision.gameObject.CompareTag("Player"), chame Invoke(nameof(Fall), delay);.
  2. Adicione void Fall(): defina body.isKinematic = false; e registre Crumble!.

Pressione “Jogar” e caminhe até a plataforma: um segundo depois, ela cai. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;

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

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

    void OnCollisionEnter(Collision collision)
    {
        // Quando o jogador aterrissar: faça a plataforma cair delay segundos depois
    }

    // Fall(): ative a física da plataforma e registre Crumble!
}

Todas as lições de Física e Jogabilidade

Pratique por conta própria: Playground de Unity