用Cube模拟Sin()图像波动
public class SineLine : MonoBehaviour {

	public int CubeCount = 100;
	public GameObject Cuber;//预设Cube
	private Transform[] cubes;//记录Cube,用来波动

	void Awake(){

		cubes = new Transform[CubeCount];

		for (int i = 0; i < CubeCount; i++) {
			
			//将所有的cube限制在[-1,1]之间
			Transform go = Instantiate (Cuber).transform;
			go.localScale = Vector3.one / CubeCount * 2;
			Vector3 pos = Vector3.one;
			//在[0,1]范围,x=0会有半边在框框外,所以+0.5偏移一下再除以数量,再-0.5后*2变换范围为[-1,1]
			pos.x = ((i + 0.5f) / CubeCount - 0.5f) * 2;
			go.SetParent (transform);
			go.localPosition = pos;
			cubes [i] = go;
		}
	}

	void Update () {
		for (int i = 0; i < CubeCount; i++) {
			Vector3 pos = cubes [i].localPosition;
			//cube被限制在[-1,1]之间,差值为2,乘于PI后刚好为一周
			pos.y = Mathf.Sin (Mathf.PI * (pos.x + Time.time));
			cubes [i].localPosition = pos;
		}
	}
}

1.gif


首页 我的博客
粤ICP备17103704号