请放下小宝 2021-10-11 22:18 采纳率: 83.3%
浏览 54
已结题

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

真的不明白是哪里错了

  • 写回答

3条回答 默认 最新

  • 本逆天下第一 2021-10-22 17:20
    关注

    你使用的是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;//重置计时器时间
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 修改了问题 10月11日
  • 修改了问题 10月11日
  • 展开全部

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?