3

飛行機の戦闘機ゲームを開発していますが、飛行経路の計算に問題があります...

飛行機のセンサーがレーダー内の物体と衝突すると、それを回避するためにある方向に向きを変えることになっていますが、衝突した場所が正確にわからないため、私はそれを行うことができません。

私はこれを使用しています(関連する部分のみ):

public void beginContact(Contact contact) 
{
    Fixture f1 = contact.getFixtureA();
    Fixture f2 = contact.getFixtureB();

    int numpoints = contact.getWorldManifold().getNumberOfContactPoints();
    WorldManifold wm = contact.getWorldManifold();
    Vector2 point0 = new Vector2(wm.getPoints()[0].x, wm.getPoints()[0].y);

    // ...

}

var point0には常に値(0,0)があり、worldManifold.numContactPointsは常に= 0です。なぜですか?

センサーと静止体が衝突しています。

このツタンカーメン(http://www.iforce2d.net/b2dtut/collision-anatomy)との唯一の違いは、、、を使用してlibgdxワールドを構築しているため、すべての静的固定具が同じボディに取り付けられていることです。tileAtlastileMapRenderer

これが初心者の質問である場合は申し訳ありませんが、数日で解決策を見つけることができませんでした。

こちらにも投稿されています:http://badlogicgames.com/forum/viewtopic.php?f = 11&t = 5417#p25961

ありがとう

4

1 に答える 1

5

センサーフィクスチャとの衝突は衝突応答を引き起こさないため、エンジンがそれらを計算する必要がないため、マニホールド内にポイントはありません。

衝突応答のない衝突点が必要な場合は、両方のフィクスチャがセンサーにならないようにセンサーステータスを変更できます。次に、連絡先リスナーのBeginContact関数とPreSolve関数で、contact-> SetEnabled(false)を実行して衝突が発生しないようにします。応答が発生します。

于 2012-09-12T20:20:06.197 に答える