How can you check if 2 bodies(with 1 Fixture both) collide(overlaps)?
I know about the ContactListener that fires a method when they start colliding and when they stop. But is there a way to check it in any given moment? Like:
if(body1.overlaps(body2))...
Additional details, one of them is sensor. this is in libgdx.
You can apply setContactlistner
to your world object like
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
}
});
The beginContact()
method will always call whenever any body will overlap or touch another body.You can also get the information about the body by contact
object like contact.getFixtureA().getBody().getUserData();
if you want to do something with them.And when they separate from each other EndContact()
method will be called.
Hope This helps.
Just check if the contact you are looking for is in the contact list:
for (ContactEdge ce = body1.getContactList(); ce != null; ce = ce.next)
{
if (ce.other == body2 && ce.contact.isTouching())
{
// Do what you want here
break;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With