7

我是 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);

谢谢

4

1 回答 1

0

您可能正在使用 setTranform() 来移动对象...当我们使用 set transform 时,Box2d 不提供回调

于 2013-06-28T12:22:20.970 回答