我正在使用Cocos2d和Box2d为iPad和iPhone制作平台游戏。 我在跳跃时添加了一些特殊功能,我需要知道什么时候应该允许我的角色跳跃。
目前我正在使用ContactManager来检查播放器(圆圈)和其他对象之间的碰撞。通过这种方式,我可以告诉我的角色,当他与另一个物体接触时,他才被允许跳跃。
问题是我不希望他能够从墙上跳下来...... 我想知道我的角色是否与我圈子底部的另一个物体接触!他只有在脚踏实地时才能跳起来。不是他的脸......
我该如何处理?
答案 0 :(得分:3)
您可以将一个小型传感器固定装置安装到角色的底部,并检查是否与其发生碰撞。 http://www.iforce2d.net/b2dtut/jumpability
答案 1 :(得分:1)
您可以获取以下联系点列表:
b2Manifold* manifold = contact->GetManifold();
for (int i = 0; i < manifold.pointCount; i++)
{
b2ManifoldPoint point = manifold.points[i];
// rest see text …
}
现在理论上,您需要做的就是检查玩家圈子最底部区域是否至少有一个点。这意味着如果接触点的x位置在圆半径的大约正/负的一半范围内,并且y位置小于圆形体的y位置,那么您在地面的某处就会发生圆形碰撞。 / p>