2017-01-28 6 views
-1

私はLibgdx box2dを使用しています.Libgdxとは異なり、box2dでrectangle.overlaps(rect1)を実行するのと異なり、beginContact()endContact()しか持たないContactListenerを実装する必要があります。私はいつでも衝突を検出したいと思っています。どのようにBox2d本体間の衝突を常にチェックしていますか?

+0

beginContactとendContactの間に常に衝突が発生します。 – luk2302

+0

@ luk2302しかしbeginContactに何かを追加すると、例えば文字列を出力することができます。文字列は、衝突が開始されたときのみ出力され、衝突中は出力されません。 –

+0

ロジックがない場合は:はい。しかし、 "isColliding"のようなフラグをtrueに設定すると、すべてのゲームのティックをチェックし、それに応じて応答するだけで済みます。衝突のチェックはより高価になります。 – luk2302

答えて

1

フレームごとにこれを確認する必要はありません。接触が行われ、接触が終了すると、ブール値を設定するだけです。

public class MyBody { 
    private boolean colliding; 

    //... 

    public void update() 
    { 
     if (beginContact()) colliding = true; 
     else if (endContact) colliding = false; 

     if (colliding) 
     { 
      System.out.println("I am colliding..."); 
     } 
     else 
     { 
      System.out.println("I am not colliding..."); 
     } 
    } 
} 
関連する問題