BoxCollider

El componente BoxCollider define una forma de colisión rectangular para una entidad.
Puede utilizarse tanto para detección de colisiones como para interacciones físicas.
Permite especificar tamaño, rotación, offset y capas con las que debe o no interactuar.

Propiedades

PropiedadTipoDescripción
layerstringCapa de colisión. Define con qué otras capas puede interactuar.
physicsbooleanSi es true, el colisionador participará en las simulaciones físicas (requiere que la entidad tenga un RigidBody).
widthnumberAncho del rectángulo (en píxeles o unidades de mundo).
heightnumberAlto del rectángulo.
offsetVector2Desplazamiento desde el origen del Transform.
rotationnumberRotación del colisionador en radianes.
ignoreCollisionsWithLayersstring[]Lista de capas con las que este colisionador no debería interactuar.
shapesShape[]Uso interno. Formas geométricas utilizadas por el sistema de detección de colisiones.

Ejemplo mínimo

const boxCollider = new BoxCollider({
    width: 16,
    height: 16,
    layer: "player",
});

Ejemplo completo

const boxCollider = new BoxCollider({
    width: 16,
    height: 16,
    rotation: 0,
    offset: new Vector2(0, 0),
    layer: "player",
    physics: true,
    ignoreCollisionsWithLayers: ["friendlyProjectiles"],
});

Ejemplo de consulta de colisiones usando CollisionRepository

// Obtener todas las colisiones del jugador
const collisions = collisionRepository.findCollisionsForCollider(boxCollider);

// Filtrar solo las colisiones contra enemigos
const enemyCollisions = collisionRepository.findCollisionsForColliderAndLayer(boxCollider, "enemy");

for (const collision of enemyCollisions) {
    console.log(`Colisión con entidad ID: ${collision.remoteEntity}`);
    console.log(`Dirección de colisión: ${collision.resolution.direction}`);
    console.log(`Profundidad de penetración: ${collision.resolution.penetration}`);
}

Notas

  • Si physics es false, el colisionador solo servirá para detectar colisiones pero no moverá la entidad cuando ocurra una penetración.
  • La propiedad physics solo tiene efecto si la entidad posee además un RigidBody.
  • ignoreCollisionsWithLayers permite excluir dinámicamente capas enteras de colisión sin necesidad de cambiar la lógica del sistema de físicas.
  • La propiedad rotation solo afecta al colisionador, no a otros componentes como el Transform o SpriteRenderer.