2016-11-29 16 views
0

私のゲームとアンドロイド私のプレーヤーは無敵のオブジェクトと衝突するようにしたいと思います。この衝突は検出されるべきですが、実際にはプレイヤーを停止させるべきではありません。彼はちょうど "行く"ことができる必要があります。私はこれがlibgdxで可能であると確信していますが、私はそれを働かせることはできません。私はチュートリアルを使用したhere物理レスポンスのないLibgdxでの衝突検出

私はちょうどトリガーを使用したい。 btCollisionObject.CollisionFlags.CF_NO_CONTACT_RESPONSEでフラグを設定すると、キャラクターが通過することを意味しますが、これが保存される場所はわかりません。だからどこでこの情報を持っているイベントを見つけることができますか?

+0

だからあなたの質問はContactListenerを実装する方法ですか?このチュートリアルを見てください:https://xoppa.github.io/blog/using-the-libgdx-3d-physics-bullet-wrapper-part1/、それを完全に読んでください。 – Xoppa

答えて

-1

私のゲームはアンドロイド私のプレーヤーは無敵のオブジェクトと衝突するようにしたいと思います。この衝突は検出されるべきですが、実際には>プレイヤーを停止させるべきではありません。あなたが必要なもの

は、それが検出できBOX2D センサ本体とペアカスタムContactListenerです。あなたのプレーヤーはBox2D本体でもあります。 2つのボディーの識別子をUserDataの形式で渡します(単純な文字列など)。この場合、ContactListener内でこれらのUserDatasをチェックできます。

Fixture.setUserData(...) 

あなたContactListenerはBOX2D ContactListenerを実装し、そのメソッドをオーバーライドします:

public class MyContactListener implements ContactListener{ 
@Override 
public void beginContact(Contact contact) { 
    Fixture fa = contact.getFixtureA(); 
    Fixture fb = contact.getFixtureB(); 
    if(fa == null || fb == null) return; 
    // ... 
} 

@Override 
public void endContact(Contact contact) { 
    Fixture fa = contact.getFixtureA(); 
    Fixture fb = contact.getFixtureB(); 
    if(fa == null || fb == null) return; 
    // ... 
} 

@Override 
public void preSolve(Contact contact, Manifold oldManifold) {} 
@Override 
public void postSolve(Contact contact, ContactImpulse impulse) {} 

} 

BOX2D本体とセンサーの宣言は、読者の練習として残しています。 BOX2Dため

初心者チュートリアルでは、ここで見つけることができます: http://rotatingcanvas.com/using-box2d-in-libgdx-game-part-i/