[英]Box2D - how to prevent continuous jumping while next to a wall
问候stackoverflow社区!
我正在开发一款使用Box2D进行碰撞检测和物理处理的Android游戏。 现在,我正在实现一个基本的Platformer系统。 跳到位,但故障很小。 以下功能旨在确定玩家是否在地面上。 简单吧? 好吧,它工作正常,除非玩家紧挨着墙,在这种情况下,它只会让他不断跳起来,因为即使墙不在玩家正下方,该功能仍会返回true。
我尝试添加其他x-check,以确保我与自己正下方的东西发生碰撞,但无济于事。
private boolean isGrounded(float deltaTime) {
List<Contact> contactList = world.getContactList();
for(int i = 0; i < contactList.size(); i++) {
Contact contact = contactList.get(i);
if(contact.isTouching() && (contact.getFixtureA() == sensorFixture ||
contact.getFixtureB() == sensorFixture)) {
Vector2 pos = body.getPosition();
WorldManifold manifold = contact.getWorldManifold();
boolean below = true;
Vector2 cpoint;
for(int j = 0; j < manifold.getNumberOfContactPoints(); j++) {
cpoint = manifold.getPoints()[j];
below &= (
(cpoint.y < pos.y - 0.15f)
&& (cpoint.x > pos.x - w/2 + 3f)
&& (cpoint.x < pos.x + w/2 - 3f)
);
if(below) return true;
}
return false;
}
}
return false;
}
因此,是否有人对我可以做些什么以使isGrounded检查更有效的指示?
提前致谢! :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.