通过Worms游戏重新创建2D侧面波浪效果


Answers:


14

是的,您是对的,可以使用数学正弦函数来模拟此二维水效果:

wave = sin(phase + t * frequency) * amplitude

在此处输入图片说明

  • phase 是一个常数,随便放什么。
  • 设置t为要处理的像素/顶点的水平位置:t = x;
  • amplitude随着时间的推移发生变化(这将使波浪上下移动):

    amplitude = sin(t * wave_speed) * wave_height

  • 结合几个波浪以获得更强的弹性效果:

    wave_final = wave0 + wave1 + ...

    对于每个波,稍微改变一些参数(例如:相位,频率等)。

这是我仅用两个波就做出的一个简单示例:

http://glslsandbox.com/e#4988.0(需要启用最新浏览器和WebGL)

注意:这是一个着色器,但是使用2D基元执行此操作的方法相同。

编辑:您不指定任何框架或2d渲染系统,但是这是如何使用多边形/三角带渲染的方法:

在此处输入图片说明


哇,这是一个很棒的答案,非常感谢您的全面回答。是的,我正在使用HTML5 Canvas api进行渲染。再次感谢您,非常有帮助!!
夏兰

是的,尽管蠕虫中的浪潮显然不仅是罪过,而且更为复杂;很有可能只是罪的叠加。
leftaboutabout

1
@leftaroundabout - Techincally每一个波函数实际上只是一个正弦无限数量的叠加。实际上,这仍然是正确的,但是更多的近似值可能会使您的生活更轻松。
假名称
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.