Invocar
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 22 de 71.
Invoke("Explode", 3f) llama una vez al método propio del script Explode, dentro de 3 segundos, y el código que viene después continúa de inmediato. Unity encuentra el método por su nombre, indicado como una cadena, y el método no recibe parámetros. Esta bomba explota 3 segundos después de que empieza el juego:
void Start()
{
Invoke("Explode", 3f);
}
void Explode()
{
Debug.Log("Boom");
Destroy(gameObject);
}Como el nombre es una cadena, el compilador no puede comprobarlo. Invoke("Explod", 3f) se compila y, 3 segundos después, Unity registra Trying to Invoke method: Bomb.Explod couldn't be called. en lugar de explotar. El nameof de C# soluciona esto: nameof(Explode) es la cadena "Explode", generada por el compilador a partir de un nombre que ha comprobado, así que un error tipográfico en ella provoca un error de compilación que ves antes de que se ejecute el juego. Escribe Invoke(nameof(Explode), 3f);.
Desafío
FácilHaz que la plataforma se desmorone un momento después de que el jugador aterrice sobre ella.
- En
OnCollisionEnter, cuandocollision.gameObject.CompareTag("Player"), llama aInvoke(nameof(Fall), delay);. - Añade
void Fall(): establecebody.isKinematic = false;y registraCrumble!.
Pulsa «Jugar» y camina sobre la plataforma: un segundo después, cae. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class Crumble : MonoBehaviour
{
public float delay = 1f;
Rigidbody body;
void Start()
{
body = GetComponent<Rigidbody>();
}
void OnCollisionEnter(Collision collision)
{
// Cuando el jugador aterrice: haz que la plataforma caiga delay segundos después
}
// Fall(): activa la física de la plataforma y muestra Crumble! en el registro
}
Todas las lecciones de Física y jugabilidad
1Cuerpo rígido
Gravedad y masaEmpujar con AddForceSaltar con un impulsoFixedUpdate para físicaVelocidadCuerpos cinemáticosRepaso: plataforma de lanzamiento4Corrutinas
InvocarInvokeRepeating y CancelInvokeTu primera corrutinaBucles en corrutinasDetener corrutinasRepaso: cuenta regresiva10Proyecto: Escape de la arena
La arenaCazadores2Colisiones
OnCollisionEnter¿Qué golpeé?Romper al impactarDe pie sobre el sueloRebote y fricciónFormas de los collidersRepaso: muro destructible5Proyecto: Carrera de Monedas
La pelota rodanteMonedas para recoger3Disparadores
Colisionadores de tipo triggerOnTriggerEnterObjetos coleccionablesLas cajas guardan el restoZonas letalesEntrada y salidaRepaso: llave y puertaPractica por tu cuenta: Playground de Unity