Unity3D编写一个物体来回运动的代码失败

让物体沿着一个方向运动,当到达一定位置后会返回,接着到达一定位置再继续前进,如此循环,让物体不停的来回运动

全部代码如下:

 5 public class MOVEMonoBehaviour
             3references
             floatz;
 8 //Startis called before the firstframeupdate
             0 references
 9 voidStart()
16
11 z=gameObject.transform.localPosition.z
12
13
14 //Updateis called onceper frame
             Oreferences
15 void Update()
6
17 if(z<=08
19 transform.Translate(Vector3.forward)
20
21 if (z>=522
23 transform.Translate(-Vector3.forward)
24
5
6

真的不明白是哪里错了

你使用的是Update,是每帧调用一次。
且,你设置的条件为if(z<=0)和if (z>=5)
每帧检测中,如果你的Z轴坐标并没有小于等于0和大于等于5
是不会运行移动的这个函数
解决方法可以设置一个计时器,以特定时间往返,但是指定的位置需要自行计算,其解决代码如下

public class NewBehaviourScript : MonoBehaviour
{
    public float speed = 1.0f;//设置物体的移动速度
    public float timer = 5;//设置初始间隔时间(意为开始后运行多少秒)

    // Use this for initialization
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {

        transform.Translate(Vector3.forward * speed * Time.deltaTime);//移动脚本
        timer -= Time.deltaTime;//使计时器开始减少读秒
        if (timer < 0)//当计时器到0时,执行如下函数
        {
            speed = -speed;//使移动速度为负,即反方向移动
            timer = 5;//重置计时器时间
        }
    }
}

这里的z是固定值,你需要在Update中,将z重新赋值即可。

在Update中添加一句代码:

z = transform.localPosition.z

楼上说滴对,或者也可以判断里用transform.localPosition.z判断