-1
私はLibgdx box2dを使用しています.Libgdxとは異なり、box2dでrectangle.overlaps(rect1)
を実行するのと異なり、beginContact()
とendContact()
しか持たないContactListener
を実装する必要があります。私はいつでも衝突を検出したいと思っています。どのようにBox2d本体間の衝突を常にチェックしていますか?
私はLibgdx box2dを使用しています.Libgdxとは異なり、box2dでrectangle.overlaps(rect1)
を実行するのと異なり、beginContact()
とendContact()
しか持たないContactListener
を実装する必要があります。私はいつでも衝突を検出したいと思っています。どのようにBox2d本体間の衝突を常にチェックしていますか?
フレームごとにこれを確認する必要はありません。接触が行われ、接触が終了すると、ブール値を設定するだけです。
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...");
}
}
}
beginContactとendContactの間に常に衝突が発生します。 – luk2302
@ luk2302しかしbeginContactに何かを追加すると、例えば文字列を出力することができます。文字列は、衝突が開始されたときのみ出力され、衝突中は出力されません。 –
ロジックがない場合は:はい。しかし、 "isColliding"のようなフラグをtrueに設定すると、すべてのゲームのティックをチェックし、それに応じて応答するだけで済みます。衝突のチェックはより高価になります。 – luk2302