Box2d Comprobar Collision / Overlaping en cualquier momento
¿Cómo se puede comprobar si 2 cuerpos (con 1 Lámpara ambos) chocan (se superponen)?
Sé sobre el ContactListener que dispara un método cuando comienzan a colisionar y cuando se detienen. Pero, ¿hay alguna manera de comprobarlo en un momento dado? Me gusta:
- Manera correcta de disponer de pantallas en Libgdx
- ¿Puedo instalar la API de Android más reciente para orientar la versión de API inferior?
- Programas funcionan bien con LibGDX -desktop pero no LibGDX - Android?
- ¿Cómo puedo detectar si un sprite fue tocado en Java libGDX?
- LibGDX - Shader trabajando en el escritorio pero no en Android
if(body1.overlaps(body2))...
Detalles adicionales, uno de ellos es sensor. Esto está en libgdx.
- Fondo de libgdx Cambio de imagen
- LibGDX crea la textura de base64 PNG ByteArrayInputStream
- Androide. Cómo mover el objeto en la dirección que se enfrenta (usando Vector3 y Quaternion)
- Cómo renderizar la imagen de la cámara YUV-NV21 de Android en el fondo en libgdx con OpenGLES 2.0 en tiempo real?
- LibGDX - ImageButton - Configuración de la imagen con fondo
- No se pudo encontrar la clase XXX referenciada desde el método XXX. <YYY>
- Renderizado de vídeo en una textura en LibGDX
- Desenfoque la pantalla en LibGDX
Puedes aplicar setContactlistner
a tu objeto mundial como
world.setContactListener(new ContactListener() { @Override public void beginContact(Contact contact) { if(contact.getfixtureA.getBody().getUserData()=="body1"&& contact.getfixtureB.getBody().getUserData()=="body2") Colliding = true; System.out.println("Contact detected"); } @Override public void endContact(Contact contact) { Colliding = false; System.out.println("Contact removed"); } @Override public void postSolve(Contact arg0, ContactImpulse arg1) { // TODO Auto-generated method stub } @Override public void preSolve(Contact arg0, Manifold arg1) { // TODO Auto-generated method stub } });
El método beginContact()
siempre llamará cada vez que un cuerpo se superponga o toque otro body.You también puede obtener la información sobre el cuerpo por objeto de contact
como contact.getFixtureA().getBody().getUserData();
Si desea hacer algo con ellos. Y cuando se separan de cada otro método EndContact()
se llamará.
Espero que esto ayude.
Sólo comprueba si el contacto que estás buscando está en la lista de contactos:
for (ContactEdge ce = body1.getContactList(); ce != null; ce = ce.next) { if (ce.other == body2 && ce.contact.isTouching()) { // Do what you want here break; } }