Android 如何知道碰撞发生在车身的右侧还是底部
我正在创建一个andengine游戏(参考本教程),在这个游戏中,我的主要角色行走时被顶部掉落的砖块击中。如果他被掉落的砖头击中,他就会死。但是,一旦砖块落地,主要角色就可以触摸砖块并在其上跳跃。现在我知道如何找到两具尸体是否相互接触。但是如何确定触点是在字符的上方还是身体的左侧或右侧 我用于联系的代码如下Android 如何知道碰撞发生在车身的右侧还是底部,android,andengine,collision-detection,collision,game-physics,Android,Andengine,Collision Detection,Collision,Game Physics,我正在创建一个andengine游戏(参考本教程),在这个游戏中,我的主要角色行走时被顶部掉落的砖块击中。如果他被掉落的砖头击中,他就会死。但是,一旦砖块落地,主要角色就可以触摸砖块并在其上跳跃。现在我知道如何找到两具尸体是否相互接触。但是如何确定触点是在字符的上方还是身体的左侧或右侧 我用于联系的代码如下 private ContactListener contactListener() { ContactListener contactListener = new ContactLi
private ContactListener contactListener()
{
ContactListener contactListener = new ContactListener()
{
public void beginContact(Contact contact)
{
final Fixture x1 = contact.getFixtureA();
final Fixture x2 = contact.getFixtureB();
Vector2[] contactPoints = contact.getWorldManifold().getPoints();
System.out.println("the points are as ::"+contactPoints);
if (x1.getBody().getUserData() != null && x2.getBody().getUserData() != null)
{
if (x2.getBody().getUserData().equals("player"))
{
player.increaseFootContacts();
}
if (x1.getBody().getUserData().equals("platform2") && x2.getBody().getUserData().equals("player"))
{
engine.registerUpdateHandler(new TimerHandler(0.2f, new ITimerCallback()
{
public void onTimePassed(final TimerHandler pTimerHandler)
{
pTimerHandler.reset();
engine.unregisterUpdateHandler(pTimerHandler);
x1.getBody().setType(BodyType.DynamicBody);
}
}));
}
if (x1.getBody().getUserData().equals("platform3") && x2.getBody().getUserData().equals("player"))
{
x1.getBody().setType(BodyType.DynamicBody);
}
}
}
public void endContact(Contact contact)
{
final Fixture x1 = contact.getFixtureA();
final Fixture x2 = contact.getFixtureB();
if (x1.getBody().getUserData() != null && x2.getBody().getUserData() != null)
{
if (x2.getBody().getUserData().equals("player"))
{
player.decreaseFootContacts();
}
}
}
public void preSolve(Contact contact, Manifold oldManifold)
{
}
public void postSolve(Contact contact, ContactImpulse impulse)
{
}
};
return contactListener;
}
请给我一些建议。这对你有足够的帮助,还是你需要更多关于身体接触方法的信息
public boolean areBodiesContacted(Body pBody1, Body pBody2,
Contact pContact)
{
if(pContact.getFixtureA().getBody().equals(pBody1) ||
pContact.getFixtureB().getBody().equals(pBody1))
if(pContact.getFixtureA().getBody().equals(pBody2) ||
pContact.getFixtureB().getBody().equals(pBody2))
return true;
return false;
}