我想知道 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/