7

私は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);

ありがとう

4

1 に答える 1

0

オブジェクトの移動に setTranform() を使用している可能性があります... set transform を使用すると、Box2d はコールバックを返しません。

于 2013-06-28T12:22:20.970 に答える