仅在圆圈底部识别联系人。 Cocos2d与Box2d

时间:2011-10-31 12:01:44

标签: iphone ipad cocos2d-iphone box2d

我正在使用Cocos2d和Box2d为iPad和iPhone制作平台游戏。 我在跳跃时添加了一些特殊功能,我需要知道什么时候应该允许我的角色跳跃。

目前我正在使用ContactManager来检查播放器(圆圈)和其他对象之间的碰撞。通过这种方式,我可以告诉我的角色,当他与另一个物体接触时,他才被允许跳跃。

问题是我不希望他能够从墙上跳下来...... 我想知道我的角色是否与我圈子底部的另一个物体接触!他只有在脚踏实地时才能跳起来。不是他的脸......

我该如何处理?

2 个答案:

答案 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>