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