32 lines
1.0 KiB
C#
32 lines
1.0 KiB
C#
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(MeshFilter))]
|
|
public class SEGIWaterDisplacement : MonoBehaviour
|
|
{
|
|
private MeshFilter meshFilter;
|
|
|
|
private Mesh mesh;
|
|
|
|
private Vector3[] initialVertices;
|
|
|
|
private void Start()
|
|
{
|
|
meshFilter = GetComponent<MeshFilter>();
|
|
mesh = meshFilter.mesh;
|
|
initialVertices = mesh.vertices;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
Vector3[] vertices = mesh.vertices;
|
|
float num = 1f;
|
|
float num2 = 0.1f;
|
|
for (int i = 0; i < vertices.Length; i++)
|
|
{
|
|
vertices[i].y = 0f + Mathf.Sin(Time.time + initialVertices[i].x * num * 1f) * 0.25f * num2 + Mathf.Sin(Time.time + initialVertices[i].x * num * 0.15278f) * 0.25f * num2 + Mathf.Sin(Time.time * 1.5f + initialVertices[i].x * num * 1.15278f + initialVertices[i].z * num * 0.4f) * 0.25f * num2 + Mathf.PerlinNoise(initialVertices[i].x * 0.85f + Time.time, initialVertices[i].z * 0.85f) * num2 + Mathf.PerlinNoise(initialVertices[i].x * 2.85f + Time.time, initialVertices[i].z * 4.85f) * 0.5f * num2;
|
|
}
|
|
mesh.vertices = vertices;
|
|
mesh.RecalculateNormals();
|
|
}
|
|
}
|