我有球员身体。他单跳。也就是说,当他跳跃时,他必须等待接地才能进行第二次跳跃。
private ContactListener contactListener()
{
ContactListener contactListener = new ContactListener()
{
@Override
public void beginContact(Contact contact)
{
player.setJumping(false);
}
@Override
public void endContact(Contact contact)
{
player.setJumping(true);
}
};
return contactListener;
}
如果有联系人,他可以跳。如果没有,他不能跳,因为他在空中。在那段代码中,如果他的头碰到任何身体,他也可以跳。所以这是错误。只有当他的脚触碰时,他才能跳。我该如何解决这个问题?
答案 0 :(得分:1)
您可以在灯具数据中使用ID。如果你的玩家有两个装置 - 身体和头部,那么你可以为它们分配标签,然后检查它们,例如:
void BeginContact(b2Contact* contact) {
void* firstFixtureUserData = contact->GetFixtureA()->GetUserData();
void* secondFixtureUserData = contact->GetFixtureB()->GetUserData();
//check if fixtures was with the correct tags
if ( (int)firstFixtureUserData == kPlayerBody || (int)secondFixtureUserData == kPlayerBody) {
if((int)firstFixtureUserData == kGround || (int)secondFixtureUserData == kGround) {
player->jump();
}
}
}
我认为此链接很有用:jump ability