让物体沿着一个方向运动,当到达一定位置后会返回,接着到达一定位置再继续前进,如此循环,让物体不停的来回运动
全部代码如下:
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<=0)
8
19 transform.Translate(Vector3.forward)
20
21 if (z>=5)
22
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判断