我是 box2d 的新手,并试图在 LibGDX 游戏中实现它。我要做的是检测各个物体之间的碰撞。因此,我创建了一个类碰撞检测并在其中实现ContactListener
,它为我提供了 4 个被覆盖的方法beginContact()
,即endContact()
我必须处理的方法。我也传递了碰撞检测类的对象,world.setcontactListner(collisionDet)
当世界类中的物体相互碰撞时,将调用碰撞检测类的重写方法。但是,当身体碰撞beginContact()
方法每次都被调用,但endContact()
每次身体失去联系时,方法都没有被调用时,就会出现问题。那么,我们可以通过什么方法来检测endContact()
每次。
碰撞检测类的代码如下:
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);
谢谢