每次在LibGDX中都不调用ContactListner(Box2d)的EndContact

Jag*_*ngh 6 java box2d libgdx

我是box2d的新手,并尝试在LibGDX游戏中实现它.我想要做的是检测各种物体之间的碰撞.所以,我做了一个类collisionDetection并实现ContactListener它,给了我4点覆盖的方法,即beginContact()endContact()我要处理.此外,我传递的是collisionDetection类的对象,world.setcontactListner(collisionDet)当世界类中的实体相互碰撞时,将通过该对象调用collisionDetection类的重写方法.但是当beginContact()每次调用物体碰撞方法时都会出现问题,但是endContact()每当物体失去接触时都不会调用方法.那么,我们endContact()每次都可以检测到什么方法.

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


}
Run Code Online (Sandbox Code Playgroud)

和世界级

collisionDet = new CollisionDetection(worldbox, 0);
worldbox.setContactListener(collisionDet);

谢谢

Vik*_*ain 0

您可能正在使用 setTranform() 来移动对象...当我们使用 set Transform 时,Box2d 不会给出回调