Áreas de activación
Aprende a usar áreas de activación en tu escena
Las áreas de Trigger te permiten reaccionar al evento de un jugador que entra o sale de un área, o de cualquier otra entidad que entra o sale de un área. Esta es una herramienta fundamental para crear escenas interactivas. Úsalas para cosas como abrir una puerta cuando el jugador se aproxima, o para sumar un punto cuando una pelota entra en un gol.
Uso de áreas de Trigger
Para usar áreas de Trigger necesitas añadir un TriggerArea componente a una entidad, luego usar un triggerAreaEventsSystem para reaccionar a los eventos.
import { engine, Transform, TriggerArea, triggerAreaEventsSystem } from '@dcl/sdk/ecs'
// create entity
const triggerEntity = engine.addEntity()
// establecer Transform
Transform.create(triggerEntity, {
position: Vector3.create(8, 0, 8)
})
// Trigger area
TriggerArea.setBox(triggerEntity)
// Evento cuando se activa el área de Trigger
triggerAreaEventsSystem.onTriggerEnter(triggerEntity, function(result) {
console.log('¡Jugador entró en el área de Trigger!')
})Formas de las áreas de Trigger
Las áreas de Trigger pueden ser una caja o una esfera.
Para alterar el tamaño del área de Trigger, puedes usar el escala propiedad del Transform componente en la entidad que contiene el TriggerArea.
Depuración
Para depurar tu escena y ver el área cubierta por el área de Trigger, puedes añadir un MeshShape componente a la entidad con el área de Trigger, y establecer la forma a la que quieras depurar. Las dimensiones de la malla por defecto coincidirán con las dimensiones del área de Trigger.
Eventos de área de Trigger
Puedes usar la triggerAreaEventsSystem para reaccionar a los diferentes eventos de un área de Trigger:
onTriggerEnter: Activado cuando una entidad entra en el área de Trigger.onTriggerExit: Activado cuando una entidad sale del área de Trigger.onTriggerStay: Activado mientras una entidad está en el área de Trigger, cada frame.
Respuestas a eventos de Trigger
Cuando se dispara un evento de área de Trigger, puedes usar el result parámetro para obtener información tanto sobre la entidad que fue activada como sobre la entidad que activó el evento.
Las siguientes propiedades están disponibles en el result parámetro:
triggeredEntity: El ID de la entidad que fue activada (esta es la entidad que posee el área de Trigger)triggeredEntityPosition: La posición de la entidad que fue activadatriggeredEntityRotation: La rotación de la entidad que fue activadaeventType: El tipo de evento de Trigger (ENTER, EXIT, STAY)timestamp: La marca de tiempo (timestamp) del evento de Triggertrigger: Un objeto con los siguientes campos:entity: El ID de la entidad que activó el Trigger (la entidad que entró en el área de Trigger)layer: La capa de colisión de la entidad que activó el Triggerposición: La posición de la entidad que activó el Triggerrotación: La rotación de la entidad que activó el Triggerescala: La escala de la entidad que activó el Trigger
Capas de áreas de Trigger
Usa el segundo argumento opcional del TriggerArea componente para establecer las capas que activarán el área de Trigger.
Por defecto, el área de Trigger se activa solo por el jugador, vía la capa ColliderLayer.CL_PLAYER. Puedes cambiar esto a cualquier otra capa de colisión pasándola como segundo argumento del TriggerArea componente.
Los valores permitidos son los mismos que los de MeshCollider componente. Ver Collision layers para más detalles.
ColliderLayer.CL_PHYSICSColliderLayer.CL_POINTERColliderLayer.CL_CUSTOM1hastaCL_CUSTOM8ColliderLayer.CL_NONE
También puedes configurar un área de Trigger para detectar múltiples capas a la vez.
Esto activará el área de Trigger cuando cualquier entidad con las capas CL_CUSTOM1 u CL_CUSTOM2 entre en el área de Trigger.
Última actualización