我想编写一个多维数据集脚本,以便它只能在x轴上从0-5移动。 我的多维数据集从零开始。我希望多维数据集向前移动直到达到5,然后停止并向后移动直到达到0,然后重复。
我遇到的问题当然是我的多维数据集停在5处,后退1步到4步,当然也可以再次前进。我希望它以0-5,然后5-0,然后重复。
我的尝试
//Drags cube along the ground
if (transform.position.x > 0 & transform.position.x < 5) {
transform.Translate(1* Time.deltaTime, 0, 0);
}
//If our cubes reaches our boundary, move it backwards
if (transform.position.x >= 5 || transform.position.x <= 0 ) {
transform.Translate(-1, 0, 0);
}
答案 0 :(得分:1)
使用Mathf.PingPong
根据当前时间在0f
和5f
之间振荡。
float speed = 1f;
float curXPosition = Mathf.PingPong(speed * Time.time, 5f);
transform.position = new Vector3(curXPosition,transform.position.y,transform.position.z);
如果您需要它在特定时间从0开始:
// as class field
public float zeroTime=0f;
public float speed;
// When you want it to start from zero, call this line:
this.zeroTime = Time.time;
// in Update/FixedUpdate
float curXPosition = Mathf.PingPong(speed * (Time.time-zeroTime), 5f);
transform.position = new Vector3(curXPosition,transform.position.y,transform.position.z);