本文转自Unity Connect博主 dreamfairy
效果图
制作可交互的水体,大致分为三步
1.标记水体碰撞的位置
2.计算水波的传递 通过波动公式,3D或者2D 波动公式都行
3.水面顶点采样波动传递结果计算结果做顶点Y轴偏移 本文参考的波动相关资料 https://en.wikipedia.org/wiki/Wave_equation
https://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869 流体 章节
相关公式
根据公式可知波的下次一次传递 z(i,j,k+1) 为 当前波值+上一次波值+周围波值
当前波值 = (4-8c2*t2/d2/d2)/(u*t)
上一次波值 *= (ut-2) / (ut + 2)
四周波值 *= (2c2t2/d^2) / (ut + 2)
其中各参数含义为 c 波速, u 粘度, d 波的递进距离, t 为递进时间
ok~ 我们重头开始
首先要建立水面
这里直接用Unity Wiki的已有轮子的创建平面,下载wiki上的代码,传到项目中 https://wiki.unity3d.com/index.php/CreatePlane