【发布时间】:2014-05-07 08:41:09
【问题描述】:
我正在创建一个andengine 游戏(参考本教程http://www.matim-dev.com/full-game-tutorial---part-1.html),我的主要角色在其中行走并被顶部落下的砖块击中。如果他被落下的砖块击中,他就会死。但是一旦砖块在地上,主角可以触摸它并跳上它。现在我知道如何判断两个物体是否相互接触。但是如何找到触点是在字符的上侧还是在身体的左侧或右侧。
我的联系方式如下
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;
}
请给我一些建议。
【问题讨论】:
标签: android andengine collision-detection collision game-physics