我有一个关于我正在使用 box2D 和 cocos2D 制作的游戏的简单问题。我昨天开始使用物理引擎,所以我对它的使用和功能相当缺乏经验。我的游戏涉及使用加速度计在屏幕上滚动一个球。我想在地面上添加孔,如果球滚入,则需要通过加速度计获得更大的加速度才能逃离孔袋。我玩弄了摩擦、线性阻尼、修改加速度计的重力矢量,并尝试增加吸引力,但我没有取得太大的成功,其中一些并不能很好地模拟我想要发生的事情。基本上我只想创建一些传感器,并为它们提供一个球可以落入的小口袋的属性。非常感谢任何提示和建议。谢谢
问问题
408 次
2 回答
0
您可以在每一帧中获取球的 y 位置,如果它低于某个阈值,则它在一个洞中。基于此,如果球在洞中,请降低灵敏度。当球出洞时,将灵敏度恢复正常。
至于创建孔,请使用 Vertex Helper 创建与您的精灵相对应的主体。
如果您需要更多解释,请随时询问。
详细说明:
现在,基本上在图片中,我正在描绘我之前试图描述的内容。如果玩家的 Y 位置低于某个点,您真正需要做的就是更改倾斜灵敏度。我只是以50为例。
一些伪代码:
- (void)update:(ccTime)dt
{
if (player.position.y >= 50) { //If the player's y position is above or equal to 50
if (sensitivity != normalSensitivity) { //We don't need to set it every frame, so lets check
sensitivity = normalSensitivity;
}
}
if (player.position.y < 50) { //If player's position is below our threshold of 50
if (sensitivity != limitedSensitivity) { //Check so we don't set the sensitivity every frame
sensitivity = limitedSensitivity;
}
}
}
现在,就 Vertex Helper 而言,它是一个开源工具(我相信),它可以帮助您为自定义形状定义顶点,然后可以将其直接复制并粘贴到您的 box2d 或花栗鼠 cocos2d 项目中。它可以喜欢这里。
我建议四处搜索有关如何使用它的教程。它非常简单,但您可能需要快速参考才能开始。
最后,要记住的是,box2d 只能处理凸形,不能处理凹形。凸形是一种形状,其中不可能在不穿过形状本身的情况下从任何顶点画线到另一个顶点。基本上是没有凹痕的东西。
我希望这会有所帮助。我不确定我是否能比我更详细,但如果您有更具体的问题,请随时提问。
于 2012-06-08T22:52:53.677 回答
0
我建议你使用 Level Helper 。它是创建基于物理的游戏的绝佳工具。
你可以在这里找到
于 2012-06-08T20:02:54.077 回答