私はbox2dが初めてで、LibGDXゲームに実装しようとしています。私がやりたいことは、さまざまな物体間の衝突を検出することです。だから、私はクラスの衝突検出を作成しContactListener
、それを実装して、4つのオーバーライドされたメソッドを提供します。つまりbeginContact()
、endContact()
対処する必要があります。world.setcontactListner(collisionDet)
また、ワールド クラスのボディが互いに衝突したときに、collisionDetection クラスのオーバーライドされたメソッドが呼び出される、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
}
そしてワールドクラス
collisionDet = new CollisionDetection(worldbox, 0);
worldbox.setContactListener(collisionDet);
ありがとう