脚本 -- 旗帜飘动特效
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的参数,来改变浮动的效果