È possibile applicare setContactlistner
al vostro oggetto mondo come
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
}
});
Il metodo beginContact()
sarà sempre chiamare ogni volta che qualsiasi il corpo si sovrapporrà o toccherà un altro corpo. Puoi anche ottenere le informazioni sul corpo tramite l'oggetto contact
come contact.getFixtureA().getBody().getUserData();
se vuoi fare qualcosa con loro.E quando si separano l'un l'altro 01 Verrà chiamato il metodo.
Spero che questo aiuti.
fonte
2013-06-27 16:54:11
correlato: https://stackoverflow.com/questions/11062252/how-to-detect-collision-but-do-not-collide-in-box2d completamente all'interno di un altro corpo: https://gamedev.stackexchange.com/questions/27320/in-box2d-how-can-i-check-for-bodies-within-a-circle –