Unity简单湖面水特效——(通过修改网格顶点,在一定区间内波动)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using UnityEngine;
 
public class OceanWave : MonoBehaviour
{
    //海浪的速度
    public float waveSpeed = 1f;
    //海浪的大小
    public float waveScale = 0.5f;
    //海浪的高度
    public float waveHeight = 0.5f;
 
    private Mesh mesh;
    private Vector3[] originalVertices;
    private Vector3[] currentVertices;
 
    private void Start()
    {
        mesh = GetComponent<MeshFilter>().mesh;
        originalVertices = mesh.vertices;
        currentVertices = new Vector3[originalVertices.Length];
    }
 
    private void Update()
    {
        for (int i = 0; i < originalVertices.Length; i++)
        {
            Vector3 newVertex = originalVertices[i];
            newVertex.y += Mathf.Sin(Time.time * waveSpeed + originalVertices[i].x + originalVertices[i].z) * waveScale * waveHeight;
            currentVertices[i] = newVertex;
        }
        mesh.vertices = currentVertices;
        mesh.RecalculateNormals();
    }
}

  

posted @   SummerTrainnn  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示