2 つのボディ (両方とも 1 つのフィクスチャ) が衝突 (オーバーラップ) しているかどうかを確認するにはどうすればよいですか?
衝突を開始したときと停止したときにメソッドを起動する ContactListener について知っています。しかし、特定の瞬間にそれを確認する方法はありますか? お気に入り:
if(body1.overlaps(body2))...
追加の詳細、そのうちの1つはセンサーです。これは libgdx にあります。
setContactlistner
次のようにワールドオブジェクトに適用できます
world.setContactListener(new ContactListener() {
@Override
public void beginContact(Contact contact) {
if(contact.getfixtureA.getBody().getUserData()=="body1"&&
contact.getfixtureB.getBody().getUserData()=="body2")
Colliding = true;
System.out.println("Contact detected");
}
@Override
public void endContact(Contact contact) {
Colliding = false;
System.out.println("Contact removed");
}
@Override
public void postSolve(Contact arg0, ContactImpulse arg1) {
// TODO Auto-generated method stub
}
@Override
public void preSolve(Contact arg0, Manifold arg1) {
// TODO Auto-generated method stub
}
});
このbeginContact()
メソッドは、ボディが別のボディに重なったり接触したりするたびに常に呼び出され ます。オブジェクトで何かをしたい場合のように、ボディに関する情報をcontact
オブジェクトごとに取得することもできます。contact.getFixtureA().getBody().getUserData();
EndContact()
お役に立てれば。
探している連絡先が連絡先リストにあるかどうかを確認してください。
for (ContactEdge ce = body1.getContactList(); ce != null; ce = ce.next)
{
if (ce.other == body2 && ce.contact.isTouching())
{
// Do what you want here
break;
}
}