Contre Jour中的弹性触手等图形效果

时间:2012-04-24 11:51:35

标签: ios opengl-es cocos2d-iphone box2d

我想知道IOS的“Contre jour”游戏有多漂亮。 特别是我喜欢有弹性的“触角”,在2分20秒的视频中显示: http://www.youtube.com/watch?v=ptdTdJarWLw

我该如何实现这样的效果?

我知道有一种名为“Verlet集成”的技术,甚至是用于在cocos2d中绘制绳索的“verlet rope”的实现,但是如何为“触手”精灵制作这样漂亮的弹性效果?

我有使用box2D的经验,并且可能尝试为此效果实现物理,但是找不到如何使用这种弹性变形来绘制精灵的解决方案。

任何人都可以帮助我或提供一些提示吗?

甚至对工艺的解释,这对我有帮助吗?

我在opengl方面有一点经验,有很好的cocos2d经验,所以我打算用cocos2d。

抱歉英语不好,我希望,你会理解我的问题:)

1 个答案:

答案 0 :(得分:9)

如果您使用Box2D,您可以尝试将frequencyHz和dampingRatio选项设置为非默认值的距离关节。也许是4-6左右的低频率和0.5-0.7左右的阻尼可能是一个很好的起点。您可以将频率视为关节尝试每秒校正距离的次数,以及每次校正距离的校正程度。将阻尼设置为小于1的值将意味着关节将更慢地校正距离,并且它将具有弹性/橡胶行为。

至于渲染,你确实可以使用verlet集成。将距离关节的两个锚点作为“绳索”的端点,并在它们之间以均匀间隔的线放置一些点(看起来不需要太多)。每一个时间步长,两者之间的点将简单地移向两侧各点的平均值。通过调整每个步骤中间点之间移动到目标位置的距离,可以使绳索看起来更紧或更松。

然后,最终的纹理/精灵渲染将从verlet点的当前位置获取其位置。