BallCollider
El componente BallCollider define una forma de colisión circular para una entidad.
Puede utilizarse tanto para detección de colisiones como para interacciones físicas.
Permite especificar el radio y offset del colisionador, así como las capas con las que debe o no interactuar.
Propiedades
| Propiedad | Tipo | Descripción |
|---|---|---|
radius | number | Radio de la circunferencia (en píxeles o unidades de mundo). |
offset | Vector2 | Desplazamiento desde el origen del Transform. |
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). |
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 ballCollider = new BallCollider({
radius: 16,
layer: "player",
});
Ejemplo completo
const ballCollider = new BallCollider({
radius: 16,
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(ballCollider);
// Filtrar solo las colisiones contra enemigos
const enemyCollisions = collisionRepository.findCollisionsForColliderAndLayer(ballCollider, "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
physicsesfalse, el colisionador solo servirá para detectar colisiones pero no moverá la entidad cuando ocurra una penetración. - La propiedad
physicssolo tiene efecto si la entidad posee además unRigidBody. ignoreCollisionsWithLayerspermite excluir dinámicamente capas enteras de colisión sin necesidad de cambiar la lógica del sistema de físicas.