I got this script on a plane mesh doing some nice rolling waves however it looks a bit too perfect - the “waves” are rolling in one direction only. I’d like to add some noise to it
var scale = 10.0;
var speed = 1.0;
private var baseHeight : Vector3[];
function Update () {
var mesh : Mesh = GetComponent(MeshFilter).mesh;
if (baseHeight == null)
baseHeight = mesh.vertices;
var vertices = new Vector3[baseHeight.Length];
for (var i=0;i<vertices.Length;i++)
{
var vertex = baseHeight*;*
vertex.y += Mathf.Sin(Time.time * speed+ baseHeight.x + baseHeight.y + baseHeight_.z) * scale;
vertices = vertex;
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
}_
You can add some perlin noise to the waves:
#pragma strict
var scale = 10.0;
var speed = 1.0;
var noiseStrength = 4.0;
private var baseHeight : Vector3[];
function Update () {
var mesh : Mesh = GetComponent(MeshFilter).mesh;
if (baseHeight == null)
baseHeight = mesh.vertices;
var vertices = new Vector3[baseHeight.Length];
for (var i=0;i<vertices.Length;i++)
{
var vertex = baseHeight*;*
vertex.y += Mathf.Sin(Time.time * speed+ baseHeight.x + baseHeight.y + baseHeight_.z) * scale;
vertex.y += Mathf.PerlinNoise(baseHeight.x + noiseWalk, baseHeight.y + Mathf.Sin(Time.time * 0.1) ) * noiseStrength;
vertices = vertex;
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
}_
Add at the end of the update function to update the MeshCollider:
GetComponent().sharedMesh = mesh;
However, changing a static collider like this is very intensive for physics. So I suggest adding a kinematic Rigidbody.