【发布时间】:2011-04-27 19:57:01
【问题描述】:
我正在 iPhone 上尝试 Cocos2D/Box2D 中的一些新想法。
我想让一小群萤火虫在圆形(随机?)路径上移动...这个想法是用户可以用网捕捉萤火虫..
我曾考虑过为此使用重力模拟,但我认为它过于复杂......我之前使用贝塞尔曲线的经验告诉我,这也不是解决方案......
有人对我有什么好的见解吗?
非常感谢。
【问题讨论】:
标签: iphone ios cocos2d-iphone box2d
我正在 iPhone 上尝试 Cocos2D/Box2D 中的一些新想法。
我想让一小群萤火虫在圆形(随机?)路径上移动...这个想法是用户可以用网捕捉萤火虫..
我曾考虑过为此使用重力模拟,但我认为它过于复杂......我之前使用贝塞尔曲线的经验告诉我,这也不是解决方案......
有人对我有什么好的见解吗?
非常感谢。
【问题讨论】:
标签: iphone ios cocos2d-iphone box2d
你需要萤火虫相互碰撞吗?
我问,好像这不是一个要求,Box2D 可能对您的需求来说太过分了。 Cocos2d 听起来是一个很好的选择,但我认为你最好研究一下像 boids 这样的植绒算法
即使这样也可能过于复杂。将一些正弦和余弦项与一些随机比例因子混合可能就足够了。
你可以有一个正弦/余弦组合形成一个几乎屏幕大小的椭圆:
x = halfScreenWidth + cos (t) * halfScreenWidth * randomFactor;
y = halfScreenHeight + sin (t) * halfScreenHeight * randomFactor;
其中 randomFactor 将是 0.6 到 0.9 范围内的某个值
这将使您在屏幕上进行广泛的椭圆运动,然后您可以添加一个较小的 sin/cos 因子,使它们围绕该椭圆上的点旋转。
通过将时间增量 (t) 乘以不同的值(负值和正值),曲线的路径将以较少的几何方式移动。例如,如果您使用
x = halfScreenWidth + cos (2*t) * halfScreenWidth * randomFactor;
椭圆会变成数字 8。(我想!)
希望这有助于您入门。祝你好运。
【讨论】:
寻找想法的地方是人造生命领域。长期以来,他们一直在模拟大量实体。这是一些用 Java 编写的简单 swarm 代码的链接,应该会给你一些想法。
【讨论】: