Colisiones, triggers y eventos de superposición para mecánicas

Capítulo 7

Tiempo estimado de lectura: 7 minutos

+ Ejercicio

Qué es una colisión en Unreal (y por qué importa para mecánicas)

En Unreal, una colisión es la forma en que un componente “responde” cuando otro componente intenta ocupar el mismo espacio. Esa respuesta puede ser física (chocar y detenerse), lógica (detectar presencia) o ninguna (ignorar). Para diseñar mecánicas comunes (recoger objetos, abrir puertas por proximidad, activar plataformas), necesitas dominar tres piezas: presets, canales y respuestas (Block/Overlap/Ignore), además de elegir el componente de colisión adecuado (Box, Sphere, Capsule).

Presets, canales y respuestas: el “contrato” de colisión

Respuestas: Block, Overlap, Ignore

  • Block: hay choque. Puede generar eventos de impacto (Hit) si hay movimiento y colisión bloqueante.
  • Overlap: no bloquea el movimiento, pero sí detecta superposición. Genera eventos Begin/End Overlap si están habilitados.
  • Ignore: no interactúa; no bloquea ni detecta.

Canales de colisión (Object Type y Trace Channels)

Unreal clasifica “qué soy” y “cómo me detectan” mediante canales:

  • Object Type: el tipo del objeto (por ejemplo Pawn, WorldDynamic, PhysicsBody).
  • Trace Channels: canales usados por raycasts/traces (por ejemplo Visibility, Camera) y también para configurar respuestas.

Cuando dos componentes se encuentran, Unreal evalúa las respuestas configuradas para cada canal. La regla práctica: si cualquiera de los dos ignora, no pasa nada; si alguno bloquea y el otro no ignora, hay bloqueo; si ambos permiten overlap (y ninguno bloquea), hay superposición.

Presets (Collision Presets)

Los presets son configuraciones predefinidas que agrupan Object Type + respuestas por canal. Aceleran el trabajo y reducen errores. Ejemplos típicos: BlockAll, OverlapAllDynamic, Pawn, Trigger. Puedes empezar con un preset y luego ajustar en Details > Collision.

Componentes de colisión: Box, Sphere y Capsule

Para triggers y detección, lo habitual es usar un componente de colisión simple (más barato y predecible que colisión compleja de malla):

Continúa en nuestra aplicación.
  • Escuche el audio con la pantalla apagada.
  • Obtenga un certificado al finalizar.
  • ¡Más de 5000 cursos para que explores!
O continúa leyendo más abajo...
Download App

Descargar la aplicación

  • Box Collision: ideal para zonas rectangulares (puertas, plataformas, áreas).
  • Sphere Collision: ideal para proximidad radial (pickups, zonas de aura).
  • Capsule Collision: ideal para personajes o zonas alargadas con extremos redondeados.

Recomendación: para mecánicas, usa un componente dedicado (Box/Sphere/Capsule) como “sensor” y deja la malla visual aparte. Así puedes cambiar el tamaño del trigger sin tocar el arte.

Eventos clave: Overlap vs Hit (cuándo usar cada uno)

OnComponentBeginOverlap / OnComponentEndOverlap

Úsalos cuando quieras detectar presencia sin bloquear: entrar/salir de un área, proximidad, activar/desactivar algo mientras el jugador está dentro.

  • Requiere que el componente tenga Generate Overlap Events activado.
  • Las respuestas de colisión deben permitir Overlap entre los canales relevantes (por ejemplo, Trigger vs Pawn).

OnHit (impacto)

Úsalo cuando necesitas choque real (Block) y datos de impacto (normal, impulso, punto de contacto). Casos: proyectiles que golpean, objetos físicos que colisionan, daño por impacto.

  • Requiere colisión en modo Block entre los objetos.
  • En muchos casos necesitas Simulation Generates Hit Events (si hay física) o que el movimiento genere hits (por ejemplo, ProjectileMovement).

Regla rápida

  • Trigger / zona → Overlap (Begin/End).
  • Choque / golpe / rebote → Hit.

Práctica 1: Pickup que se destruye al recoger

Objetivo

Crear un actor de pickup que detecte al jugador al entrar en su esfera y se destruya (y opcionalmente dispare lógica como sumar puntos).

Configuración del Blueprint del Pickup

  1. Crea un Blueprint Actor: BP_Pickup.
  2. Añade componentes:
    • Static Mesh (visual).
    • Sphere Collision (sensor). Colócala como root o como hijo; lo importante es que sea el componente que detecta.
  3. Selecciona Sphere Collision y en Details > Collision:
    • Collision Presets: prueba Trigger como base.
    • Generate Overlap Events: activado.
    • Verifica que la respuesta a Pawn sea Overlap.

Lógica con OnComponentBeginOverlap

  1. En el Event Graph, selecciona la Sphere Collision y añade el evento: OnComponentBeginOverlap (SphereCollision).
  2. Desde el pin Other Actor, filtra para asegurarte de que es el jugador. Opciones comunes:
    • Comparar con Get Player Character.
    • O comprobar si implementa una interfaz o tiene un tag (si ya lo usas en tu proyecto).
  3. Si es el jugador: ejecuta Destroy Actor sobre Self.
// Pseudoflujo Blueprint (conceptual) OnComponentBeginOverlap (Sphere) -> Branch (OtherActor == GetPlayerCharacter) -> DestroyActor(Self)

Errores típicos y checklist

  • No se dispara el overlap: revisa Generate Overlap Events en ambos componentes (pickup y cápsula del jugador).
  • El jugador “choca” con el pickup: la esfera está en Block; cambia a Overlap para Pawn.
  • Se dispara con otros objetos: ajusta respuestas por canal o filtra por actor/clase/tag.

Práctica 2: Puerta automática por proximidad (abre al entrar, cierra al salir)

Objetivo

Una puerta que se abre cuando el jugador entra en un Box Trigger y se cierra cuando sale. Aquí es donde BeginOverlap y EndOverlap trabajan en pareja.

Componentes

  1. Crea BP_AutoDoor (Actor).
  2. Añade:
    • Static Mesh para la puerta (DoorMesh).
    • Box Collision como zona de proximidad (ProximityBox).
  3. Configura ProximityBox:
    • Preset: Trigger (o Custom).
    • Generate Overlap Events: activado.
    • Respuesta a Pawn: Overlap.

Animación simple con Timeline (apertura/cierre)

Usa un Timeline para interpolar la rotación o la posición de la puerta.

  1. Crea un Timeline TL_Door con una pista float de 0 a 1 (por ejemplo 0.0 en t=0, 1.0 en t=0.5).
  2. En Update, interpola entre rotación cerrada y abierta. Ejemplo conceptual: Lerp (Rotator) o ajustar SetRelativeRotation con un yaw multiplicado por el alpha.

Eventos de overlap

  1. OnComponentBeginOverlap (ProximityBox): si el Other Actor es el jugador → Play del Timeline.
  2. OnComponentEndOverlap (ProximityBox): si el Other Actor es el jugador → Reverse del Timeline.
BeginOverlap -> Play TL_Door EndOverlap -> Reverse TL_Door

Detalles importantes

  • Si hay varios actores entrando/saliendo (por ejemplo NPCs), considera contar cuántos están dentro (un contador) para no cerrar cuando aún queda alguien dentro.
  • Asegúrate de que el Box Trigger sea más grande que la puerta para que el jugador lo active antes de chocar.

Práctica 3: Plataforma que se activa al pisarla

Dos enfoques: Overlap (sensor) vs Hit (pisada con bloqueo)

Para “pisar” una plataforma, puedes:

  • Overlap: una Box Collision encima de la plataforma detecta al jugador. Ventaja: simple y estable.
  • Hit: usar el choque real con la plataforma (Block) y reaccionar al impacto. Útil si necesitas datos de impacto o si la plataforma es física.

Enfoque recomendado (Overlap con sensor)

  1. Crea BP_PressurePlatform.
  2. Componentes:
    • Static Mesh (PlatformMesh).
    • Box Collision (StepTrigger) colocada ligeramente por encima de la superficie.
  3. Configura StepTrigger: Preset Trigger, Overlap con Pawn, Generate Overlap Events activado.
  4. En OnComponentBeginOverlap (StepTrigger): si es el jugador → activar (por ejemplo cambiar material, encender luz, mover plataforma, habilitar otra mecánica).
  5. Opcional: en OnComponentEndOverlap desactivar.

Enfoque alternativo (OnHit)

Si quieres activar al recibir un golpe:

  1. Asegura que PlatformMesh tenga colisión en Block contra Pawn.
  2. Activa Simulation Generates Hit Events si aplica (especialmente si hay física).
  3. Usa OnComponentHit (PlatformMesh) y filtra por el jugador.

Nota: OnHit puede dispararse múltiples veces por fricción o micro-impactos; suele requerir lógica extra (cooldown, “ya activado”, etc.).

Verificación y depuración de colisiones (imprescindible)

Visualizar colisiones

  • En el viewport del editor, selecciona el componente de colisión (Box/Sphere/Capsule) y ajusta su tamaño con los handles.
  • En el menú de visualización del viewport, usa modos de depuración para ver colisiones (por ejemplo, mostrar colisión simple). Según versión, puedes encontrarlo en opciones de Show del viewport.

Revisar ajustes en Details

Cuando algo no dispara eventos, revisa en este orden:

ElementoQué revisarValor típico
Componente sensorCollision Presets / CustomTrigger o Custom
Componente sensorGenerate Overlap EventsOn
Componente sensorRespuesta a PawnOverlap
Jugador (cápsula)Generate Overlap EventsOn
Ambos¿Alguno está en Ignore?No
Para HitBlock + Hit EventsBlock y Hit habilitado

Depurar con prints y datos del evento

En BeginOverlap/Hit, imprime información para confirmar qué está ocurriendo:

  • Other Actor y Other Comp (qué te está tocando).
  • En Hit: Hit Normal, Impact Point (útil para efectos).
// Pseudoflujo: OnBeginOverlap -> PrintString(OtherActor DisplayName) // Pseudoflujo: OnHit -> PrintString(ImpactPoint)

Ajustes finos comunes

  • Si un trigger “falla” cuando el jugador va rápido, agranda el volumen o evita geometrías muy finas.
  • Si el trigger se activa desde lejos, revisa el tamaño real del componente (a veces está escalado por el parent).
  • Si la malla tiene colisión compleja que interfiere, separa: malla visual sin eventos + componente simple dedicado para eventos.

Ahora responde el ejercicio sobre el contenido:

Quieres que un pickup detecte al jugador al entrar en su área, sin bloquear el movimiento, y que se destruya al ser recogido. ¿Qué configuración y evento son los más adecuados?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Para recoger sin bloquear, el sensor debe permitir Overlap (no Block) y tener Generate Overlap Events activado. El evento adecuado para detectar la entrada del jugador es OnComponentBeginOverlap, tras lo cual se puede ejecutar Destroy Actor.

Siguiente capítulo

Construcción de mecánicas de gameplay con Blueprints

Arrow Right Icon
Portada de libro electrónico gratuitaUnreal Engine para Principiantes: Fundamentos de Blueprints y Lógica de Gameplay
64%

Unreal Engine para Principiantes: Fundamentos de Blueprints y Lógica de Gameplay

Nuevo curso

11 páginas

Descarga la aplicación para obtener una certificación gratuita y escuchar cursos en segundo plano, incluso con la pantalla apagada.