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);.
Desafio
FácilFaça a plataforma desmoronar um instante depois que o jogador aterrissar nela.
- Em
OnCollisionEnter, quandocollision.gameObject.CompareTag("Player"), chameInvoke(nameof(Fall), delay);. - Adicione
void Fall(): definabody.isKinematic = false;e registreCrumble!.
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
1Rigidbody
Gravidade e MassaEmpurrar com AddForcePular com um ImpulsoFixedUpdate para FísicaVelocidadeCorpos CinemáticosRevisão: Plataforma de Lançamento4Corrotinas
InvocarInvocar repetidamente, Cancelar invocaçãoSua primeira corrotinaLoops em corrotinasInterrompendo corrotinasRevisão: contagem regressiva10Projeto: Fuga da Arena
A ArenaCaçadores2Colisões
OnCollisionEnterO que eu acertei?Quebre no impactoNo chãoQuique e atritoFormas dos collidersRevisão: Parede destrutível5Projeto: Corrida das Moedas
A Bola RolanteMoedas para ColetarPratique por conta própria: Playground de Unity