脚本 -- 旗帜飘动特效

2017-08-08  本文已影响150人  Shawn_正品鞋铺
using UnityEngine;
using System.Collections;

public class MyItem : MonoBehaviour
{
    public float scale = .0f;
    public float speed = 1.0f;
    private Vector3[] baseHeight ;
    bool useOriginal  = false;

private void Update()
{
    Mesh mesh = GetComponent<MeshFilter>().mesh;

    if (baseHeight == null)
        baseHeight = mesh.vertices;

    // gameObject.Destroy(GetComponent(MeshCollider));

    var vertices = new Vector3[baseHeight.Length];
    for (var i = 0; i < vertices.Length; i++)
    {
        var vertex = baseHeight[i];

        if (useOriginal)
        {
            vertex.y += Mathf.Sin(Time.time * speed + baseHeight[i].x + baseHeight[i].y + baseHeight[i].z) * scale;
        }
        else
        {
            vertex.y += Mathf.Sin(Time.time * speed + baseHeight[i].x + baseHeight[i].y) * (scale * 0.5f) + Mathf.Sin(Time.time * speed + baseHeight[i].z + baseHeight[i].y) * (scale * 0.5f);
        }

        vertices[i] = vertex;
    }
    mesh.vertices = vertices;
    mesh.RecalculateNormals();

    Destroy(transform.GetComponent<MeshCollider>());

    MeshCollider collider = GetComponent<MeshCollider>();
    if (collider == null)
    {
        collider = gameObject.AddComponent<MeshCollider>();
        //collider.isTrigger = true;
    }
  }
}

将脚本放置在Plane上并附上需要的材质球,就能有你想要的效果。
通过改变脚本的Speed和Scale的参数,来改变浮动的效果

上一篇下一篇

猜你喜欢

热点阅读