在左右两侧连续移动平台

时间:2013-12-23 19:05:22

标签: c# unity3d

我想在x轴上不断地在有限的空间内左右移动一个立方体。但是立方体只能在一个方向上继续移动,就像继续向左移动直到它离开屏幕一样。起始x轴的位置为0.在C#中为Unity3d编写以下代码。谢谢你的建议。

void Update () {

        if (transform.position.x < 1)
        {
            transform.Translate(Vector3.left * 0.1f);
        }
        else if (transform.position.x > -1)
        {
            transform.Translate(Vector3.right * 0.1f);
        }
    }

2 个答案:

答案 0 :(得分:4)

这里有两个问题。首先,正如另一个答案所指出的那样,你似乎有你的不到和交换了大于号的符号,所以你总是进入第一个(左)块。

其次,你总是在哪个方向上移动当前位置,这听起来是正确的,但实际上并非如此。你真正想要的是“当前的方向”,无论是什么,除非你处于边缘,在这种情况下“当前的方向”需要逆转。

也就是说,你需要这样的东西:

private Vector3 movement = Vector3.left * 0.1f;

public void Update() {
    if (cube.position.x > 1)
        movement = Vector3.left * 0.1f;
    else if (cube.position.x < -1)
        movement = Vector3.right * 0.1f;

    transform.Translate(movement);
}

编辑:感谢Chris Hayes指出Vector3不可为空。我对Unity3d并不熟悉,只是遇到了这个普遍的问题。

Edit2:为了进一步澄清,你不能只有2个区域,并说“如果它在这个区域,向左移动,如果它在另一个区域,向右移动。”然后它最终振荡回来&amp;在两个区域的边界上。你需要的是三个区域:

<-- (move right) -->|<-- (keep going same direction) -->|<-- (move left) -->

答案 1 :(得分:1)

所有值.99到-99都小于1,所以你的其他值永远不会被击中。除非你的价值大于1