2012-06-16 19 views
12

Cómo detectar si el cuerpo colisiona con otro cuerpo pero no reacciona a esta colisión.¿Cómo detectar colisión pero no colisionar en box2d?

Por por defecto i - detectar colisión y cuerpos colisionan.

Si configuro el filtro fixtureDef - los cuerpos no colisionan pero no puedo detectar la colisión.

Ayuda por favor!

+3

Intente leer más sobre los sensores http://www.box2d.org/manual.html – Cyclonecode

Respuesta

18

Si el accesorio nunca tiene que colisionar con nada, podría hacerlo un sensor. Si necesita colisionar con algunas cosas pero no con otras, puede contactar-> SetEnabled (false) en la PreSolve del oyente de colisión, dependiendo de con qué chocó.

+0

Adición: en lugar de usar PreSolve, también puede usar máscaras de colisión y/o grupos de colisión para controlar lo que accesorio debe y no debe colisionar con. – Thomas

+0

Todavía quiere detectar cuando ocurre una colisión, simplemente no quiere ninguna respuesta de colisión. Cambiar la máscara de colisión evitará la detección de colisiones por completo. – iforce2d

+0

Es cierto. Esto necesita combinarse con accesorios del sensor. – Thomas

8

Lo que quiere aquí es un accesorio de sensor en un cuerpo. Desde el manual de box2d:

A veces la lógica del juego necesita saber cuándo dos dispositivos se superponen pero no debería haber una respuesta de colisión. Esto se hace mediante el uso de sensores. Un sensor es un dispositivo que detecta una colisión pero no produce una respuesta.

Puede marcar cualquier accesorio como si fuera un sensor. Los sensores pueden ser estáticos o dinámicos. Recuerde que puede tener múltiples accesorios por cuerpo y puede tener cualquier combinación de sensores y accesorios sólidos.

Los sensores no generan puntos de contacto. Hay dos maneras de obtener el estado de un sensor:

  1. b2Contact :: IsTouching
  2. b2ContactListener :: BeginContact y EndContact

Se puede establecer un accesorio como un sensor y luego escribir en tu oyente de contacto. Si un dispositivo tiene su indicador de sensor configurado en verdadero, proporcionará datos de colisión sin simular físicamente la colisión (es decir, le permitirá probar la superposición entre cualquier otro elemento colisionador).

Este es un útil tutorial sobre cómo para comenzar a usar los sensores Ray Wenderlich sensor tutorial

Cuestiones relacionadas