Entrada y salida
Parte de la sección Física y jugabilidad del Journey de Unity de Coddy. Lección 20 de 71.
Un disparador envía dos mensajes más. OnTriggerExit(Collider other) se ejecuta una vez, en el paso de física en el que termina la superposición, sea cual sea la causa. OnTriggerStay(Collider other) se ejecuta en cada paso de física mientras dura la superposición, 50 veces por segundo de forma predeterminada, como FixedUpdate(). Los tres reciben el mismo Collider.
Esta corriente ascendente levanta todo lo que flota en su interior e informa cuando sale:
public float lift = 15f;
void OnTriggerStay(Collider other)
{
other.attachedRigidbody.AddForce(Vector3.up * lift);
}
void OnTriggerExit(Collider other)
{
Debug.Log(other.name + " left the updraft");
}Una fuerza corresponde a un paso de física, así que OnTriggerStay es adecuado: el empuje se aplica una vez por paso mientras la pelota esté dentro y se detiene en cuanto sale. La corriente ascendente no tiene Rigidbody, así que todos los objetos que la atraviesen deben tener uno, y attachedRigidbody nunca es null en este caso. Para aplicar una cantidad por segundo dentro de OnTriggerStay, multiplica por Time.deltaTime, que durante un paso de física equivale a la duración del paso: 0.02. Cada visita genera un OnTriggerEnter y, más tarde, un OnTriggerExit para el mismo colisionador.
Desafío
FácilEnciende la lámpara mientras haya algo en la zona de carga.
- Añade un campo
int inBay;. EnStart(), establecelamp.enabled = false;. - En
OnTriggerEnter, suma 1 ainBayy establecelamp.enabled = true;. - En
OnTriggerExit, resta 1 ainBayy apaga la lámpara solo cuando llegue a 0.
Pulsa «Jugar» y empuja las cajas hacia dentro y hacia fuera: la lámpara permanece encendida hasta que la zona esté vacía. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
public class LoadingBay : MonoBehaviour
{
public Light lamp;
// La lámpara está encendida mientras haya algo en la zona de carga, y apagada cuando la zona de carga está vacía
}
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