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;
}
}
}