Trigger Areas

Aprende cómo usar trigger areas en tu escena

Las áreas de disparo (trigger areas) 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 acerca, o para sumar un punto cuando una pelota entra en una portería.

Uso de trigger areas

Para usar trigger areas 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 trigger area
triggerAreaEventsSystem.onTriggerEnter(triggerEntity, function(result) {
  console.log('¡El jugador entró en el trigger area!')
})

Formas de trigger area

Las trigger areas pueden ser una caja (box) o una esfera (sphere).

circle-info

💡 Tip : La esfera es la forma más fácil de calcular para el engine, ya que se logra comprobando la distancia desde el centro de la esfera. Si tienes dudas, usa una esfera.

Para alterar el tamaño del trigger area, puedes usar el scale propiedad del Transform componente en la entidad que contiene el TriggerArea.

Depuración

Para depurar tu escena y ver el área cubierta por el trigger area, puedes añadir un MeshShape componente a la entidad con el trigger area, y establecer la forma a la que quieres depurar. Las dimensiones de la malla por defecto coincidirán con las dimensiones del trigger area.

Eventos de trigger area

Puedes usar el triggerAreaEventsSystem para reaccionar a los diferentes eventos de un trigger area:

  • onTriggerEnter : Activado cuando una entidad entra en el trigger area.

  • onTriggerExit : Activado cuando una entidad sale del trigger area.

  • onTriggerStay : Activado mientras una entidad está en el trigger area, en cada frame.

Respuestas a eventos de trigger

Cuando se desencadena un evento de trigger area, 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 trigger area)

  • triggeredEntityPosition : La posición de la entidad que fue activada

  • triggeredEntityRotation : La rotación de la entidad que fue activada

  • eventType : El tipo de evento de trigger (ENTER, EXIT, STAY)

  • timestamp : La marca de tiempo (timestamp) del evento de trigger

  • trigger : Un objeto con los siguientes campos:

    • entity : El ID de la entidad que activó el trigger (la entidad que entró en el trigger area)

    • layer : La capa de colisión (collision layer) de la entidad que activó el trigger

    • position : La posición de la entidad que activó el trigger

    • rotation : La rotación de la entidad que activó el trigger

    • scale : La escala de la entidad que activó el trigger

Capas de trigger area

Usa el segundo argumento opcional del TriggerArea componente para establecer las capas que activarán el trigger area.

Por defecto, el trigger area se activa solo por el jugador, vía la capa ColliderLayer.CL_PLAYER. Puedes cambiar esto a cualquier otra collision layer pasando ésta como segundo argumento del TriggerArea component.

Los valores permitidos son los mismos que los de la MeshCollider componente. Ver Collision layers para más detalles.

  • ColliderLayer.CL_PHYSICS

  • ColliderLayer.CL_POINTER

  • ColliderLayer.CL_CUSTOM1 hasta CL_CUSTOM8

  • ColliderLayer.CL_NONE

circle-info

💡 Tip : Las capas CL_CUSTOM1 hasta CL_CUSTOM8 no tienen ningún comportamiento especial por sí solas; puedes usarlas para lo que mejor convenga a tu escena.

También puedes configurar un trigger area para detectar múltiples capas a la vez.

Esto activará el trigger area cuando cualquier entidad con las capas CL_CUSTOM1 o CL_CUSTOM2 entre en el trigger area.

Última actualización