Cocos2d iphone Box2D小口袋孔创建

Cocos2d iphone Box2D小口袋孔创建,cocos2d-iphone,box2d,Cocos2d Iphone,Box2d,我有一个关于我正在使用box2D和cocos2D制作的游戏的简单问题。我昨天开始使用物理引擎,所以我对它的使用和功能缺乏经验。我的游戏包括使用加速计在屏幕上滚动一个球。我想在地面上加几个洞,如果球滚进去,它需要通过加速计获得更大的加速度才能逃出洞袋。我曾玩弄过摩擦、线性阻尼、修改加速度计的重力矢量,并尝试过添加吸引力,但我没有获得太多的成功,其中一些并不能很好地模拟我想要发生的事情。基本上,我只想创建一些传感器,给它们一个球可以落进去的小口袋的特性。任何提示和建议都将不胜感激。谢谢我建议您使用关

我有一个关于我正在使用box2D和cocos2D制作的游戏的简单问题。我昨天开始使用物理引擎,所以我对它的使用和功能缺乏经验。我的游戏包括使用加速计在屏幕上滚动一个球。我想在地面上加几个洞,如果球滚进去,它需要通过加速计获得更大的加速度才能逃出洞袋。我曾玩弄过摩擦、线性阻尼、修改加速度计的重力矢量,并尝试过添加吸引力,但我没有获得太多的成功,其中一些并不能很好地模拟我想要发生的事情。基本上,我只想创建一些传感器,给它们一个球可以落进去的小口袋的特性。任何提示和建议都将不胜感激。谢谢

我建议您使用关卡助手。这是一个非常棒的工具来创建基于物理的游戏


你可以找到它

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

至于创建孔,请使用顶点辅助对象创建与精灵对应的实体

如果你需要更多的解释,尽管问吧

详细阐述:

现在,基本上在图片中,我描述了我之前试图描述的内容。如果玩家的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;
        }
    }
}
-(无效)更新:(ccTime)dt
{
如果(player.position.y>=50){//如果玩家的y位置大于或等于50
如果(灵敏度!=normalsensition){//我们不需要在每一帧都设置它,所以让我们检查一下
灵敏度=正常灵敏度;
}
}
如果(player.position.y<50){//如果player的位置低于我们的阈值50
如果(灵敏度!=limitedSensitivity){//请检查,这样我们就不会在每帧设置灵敏度
灵敏度=有限灵敏度;
}
}
}
现在,就Vertex Helper而言,它是一个开源工具(我相信),可以帮助您为自定义形状定义顶点,然后可以将这些顶点复制并直接粘贴到您的box2d或chipmunk cocos2d项目中。它可能很有趣

我建议在谷歌上搜索关于如何使用它的教程。它非常简单,但您可能需要一个快速的参考来开始

最后,需要记住的是,box2d只能处理凸面形状,而不能处理凹面形状。 凸面形状是一种形状,在这种形状中,如果不通过形状本身,就不可能从任何顶点到另一顶点绘制直线。基本上没有凹痕的东西


我希望这有帮助。我不确定我是否能比我更详细地阐述,但如果您有更具体的问题,请随时提问。

请您详细说明一下您的意思。谢谢,我感谢你的帮助。@Eric我详细说明了,请看原始答案。谢谢,我应该指定游戏从俯视图运行,因为这是一个2d引擎,从这个角度来看,所有东西都“看起来”在同一个平面上。我玩弄了球的开始接触和结束接触、圆圈传感器和接触监听器,从鸟瞰图上看到了一个像样的小孔。我很感谢你的意见。我本以为在口袋中心增加一个吸引力就行了。也许你可以告诉我们你是怎么做到的。