unity如何仅使用坐标就允许对象在特定边界内移动

时间:2018-11-14 20:34:41

标签: c# unity3d

我想编写一个多维数据集脚本,以便它只能在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);
}

1 个答案:

答案 0 :(得分:1)

使用Mathf.PingPong根据当前时间在0f5f之间振荡。

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