上一篇文章(草地的顶点动画实现风吹草动)中我们通过模型的顶点动画来模拟了风吹草动的效果。今天我们在给他加上一个交互的效果,就是有角色或者其他物体在草地上走过时,草地会向周围散开。我们先看下草不动的时候向周围散开的样子。
其实实现方法也很简单,只要向Shader传递一下物体的坐标信息,然后在shader中用草的顶点坐标减去传递进来的物体坐标就可以得到草每个顶点散开的方向了。然后再通过一个半径的范围值来控制交互影响的范围,当然还是要通过UV的V方向的值来控制根部不动。
v2f vert (appdata v)
{
v2f o;
float4 worldPos = mul(unity_ObjectToWorld, v.vertex);
//得到物体和草模型顶点之间的距离
float dis = distance(_PlayerPos, worldPos);
//通过影响范围,还有强