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

标签 ios opengl-es cocos2d-iphone box2d

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

我怎样才能实现这样的效果?

我知道cocos2d中有“Verlet integration”的技术,甚至实现了“verlet rope”来画绳子,但是如何给“触手” Sprite 做出这么好的弹性效果呢?

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

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

只是对技术的解释,对我有帮助吗?

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

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

最佳答案

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

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

最终的纹理/ Sprite 渲染将从 verlet 点的当前位置获取其位置。

关于ios - Contre Jour 中的弹性触手等图形效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297280/

相关文章:

ios - Metal RGB 到 YUV 转换计算着色器

iphone - 适用于 iPhone 的 Sparrow 或 Cocos2D 2D 游戏?

objective-c - NSArray 和 CCArray 的区别

objective-c - ios - 如何连接字符串以创建 url?

ios - 如何在 Google Map iOS Swift 中获取点击位置的经纬度

ios - 我发现了一个僵尸..现在怎么办?

firefox - 为什么 Firefox 中的 gl.readPixels 给出全 0?

android - 着色器存储缓冲区对象 : endianness?

cocoa - 滑动 CCMenu

ios - Youtube API v3 search.list 返回不相关的视频 Swift