Box2D小口袋创作

时间:2012-06-08 19:45:01

标签: cocos2d-iphone box2d

我对使用box2D和cocos2D制作的游戏有一个简单的问题。我昨天开始使用物理引擎,所以我对它的使用和功能缺乏经验。我的游戏涉及使用加速度计在屏幕上滚动球。我想在地面添加孔,如果球滚入,则需要通过加速度计获得更大的加速度以逃离孔口袋。我玩过摩擦,线性阻尼,修改加速度计的重力矢量,并试图增加吸引力,但我没有取得太大的成功,其中一些并没有真正模拟我想要发生的事情。基本上我只是想创建一些传感器,并给它们一个球可以落入的小口袋的属性。非常感谢任何提示和建议。感谢

2 个答案:

答案 0 :(得分:0)

我建议你使用Level Helper。它是创建基于物理的游戏的绝佳工具。

你可以找到它here

答案 1 :(得分:0)

你可以每帧取出球的y位置,如果它低于某个阈值,那么它就在一个洞里。基于此,如果球在一个洞中,降低灵敏度。当球离开球洞时,将灵敏度恢复正常。

至于创建孔,使用Vertex Helper创建与精灵对应的实体。

如果您需要更多解释,请随时提出。

阐述:

Example

现在,基本上在图片中,我描绘的是我之前尝试描述的内容。你真正需要做的就是在玩家的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或chipmunk cocos2d项目中。它可以是here

我建议谷歌搜索有关如何使用它的教程。这很简单,但您可能需要一个快速参考来帮助您入门。

最后,需要记住的是,box2d只适用于凸形,而不是凹形。 凸形是一种形状,其中in不可能从任何顶点到另一个顶点绘制线而不通过形状本身。基本上没有缩进的东西。

Convex vs concave

我希望这有帮助。我不确定我能否详细说明,但如果您有更具体的问题,请随时提出。