BoxCollider
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
Propiedad | Tipo | Descripción |
---|---|---|
layer |
string |
Capa de colisión. Define con qué otras capas puede interactuar. |
physics |
boolean |
Si es true , el colisionador participará en las simulaciones físicas (requiere que la entidad tenga un RigidBody ). |
width |
number |
Ancho del rectángulo (en píxeles o unidades de mundo). |
height |
number |
Alto del rectángulo. |
offset |
Vector2 |
Desplazamiento desde el origen del Transform . |
rotation |
number |
Rotación del colisionador en radianes. |
ignoreCollisionsWithLayers |
string[] |
Lista de capas con las que este colisionador no debería interactuar. |
shapes |
Shape[] |
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
esfalse
, 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 unRigidBody
. 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 elTransform
oSpriteRenderer
.