BallCollider
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
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.