设置在box2d和engine中启用的联系人 [英] Set contact enabled in box2d andengine
本文介绍了设置在box2d和engine中启用的联系人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何禁用box2d(Andengine)中两个物体之间的接触.我已经使用过contact.setEnabled(false)
,但这对我不起作用.我在下面提供了代码以供参考.
How to disable the contact between two bodies in box2d (Andengine). I have used contact.setEnabled(false)
but this was not working for me. I have given code below for reference.
@Override
public void beginContact(final Contact pContact)
{
final Fixture fixtureA = pContact.getFixtureA();
final Body bodyA = fixtureA.getBody();
final Object userDataA = bodyA.getUserData();
final Fixture fixtureB = pContact.getFixtureB();
final Body bodyB = fixtureB.getBody();
final Object userDataB = bodyB.getUserData();
if(userDataA==null || userDataB==null)
return;
if(userDataA.equals(target) && userDataB.equals(ball)
{
pContact.setEnabled(false);
}
}
推荐答案
@Override
public void preSolve(Contact contact, Manifold oldManifold)
{
PhysicsConnectorManager mPC = this.mPhysicsWorld.getPhysicsConnectorManager();
Body targetBody = mPC.findBodyByShape(target);
Body ballBody = mPC.findBodyByShape(ball);
if (contact.getFixtureA().getBody() == targetBody && contact.getFixtureB().getBody() == ballBody)
{
contact.setEnabled(false);
}
else
{
contact.setEnabled(true);
}
}
这篇关于设置在box2d和engine中启用的联系人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文