我刚开始接触box2d并试图在LibGDX游戏中实现它。我想要做的是检测各个物体之间的碰撞。因此,我创建了一个collisionDetection类,并在其中实现了ContactListener,这为我提供了4个重写方法,即beginContact()和endContact(),我必须处理它们。同时,我将collisionDetection类的对象传递给world.setcontactListner(collisionDet),当世界类中的物体相互碰撞时,collisionDetection类的重写方法将被调用。但问题在于,当物体碰撞时,beginContact()方法每次都会被调用,但是当物体失去接触时,endContact()方法并不总是被调用。那么,我们有哪些可能的方法可以每次检测到endContact()呢?
collisionDetection类的代码如下:
collisionDetection类的代码如下:
public class CollisionDetection implements ContactListener {
static Fixture fixtureA;
static Fixture fixtureB;
public static boolean Colliding=false;
World world;
protected CollisionDetection(World world, long addr) {
this.world = world;
// TODO Auto-generated constructor stub
}
@Override
public void beginContact(Contact contact) {
// TODO Auto-generated method stub
fixtureA = contact.getFixtureA();
fixtureB = contact.getFixtureB();
Colliding=true;
}
@Override
public void endContact(Contact contact) {
// TODO Auto-generated method stub
Colliding=false;
}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
并且是世界级的
collisionDet = new CollisionDetection(worldbox, 0);
worldbox.setContactListener(collisionDet);
谢谢
endContact()
。 - Jagdeep Singh