【问题标题】:Moving GameObjects via script smoothly across the screen like an animation in Unity通过脚本在屏幕上平滑移动游戏对象,就像 Unity 中的动画一样
【发布时间】:2019-04-21 12:43:50
【问题描述】:

我正在尝试将游戏对象移动到屏幕上的不同位置,我希望它们像动画一样移动,在编程运行时平滑移动。我正在使用 Unity 和 Leapmotion

我已经尝试了下面的代码,但这只是将对象立即移动到新位置,它不会缓慢移动它,以便用户可以看到它从当前位置移动到新位置。 - 像动画一样。

    myobject.transform.Translate(0f,0.5f,1f);

您的帮助将不胜感激。提前谢谢你

【问题讨论】:

    标签: c# unity3d gameobject


    【解决方案1】:

    您必须在Update 中使用Time.deltaTime 或在FixedUpdate 中使用Time.fixedDeltaTime

    例如

    myobject.transform.position += (direction * Time.deltaTime);
    

    【讨论】:

      【解决方案2】:

      transform.Translate 将继续沿提供的方向移动对象

      你要找的是Vector3.Lerp

      obj.transform.position = Vector3.Lerp(obj.transform.position, new Vector3(0f, 0.5f, 0f), Time.deltaTime * speed);
      

      【讨论】:

        【解决方案3】:

        另一种移动游戏对象的方法,但不是指定目标点,而是使用运动矢量:

        private Rigidbody rb;
        
        void Start()
        {
            rb = GetComponent<Rigidbody>();
            ChangeDirection(new Vector3(1,1,0));
        }
        
        void ChangeDirection(Vector3 dir)
        {
            rb.velocity = dir;
        }
        

        不要忘记在对象上添加刚体组件。

        【讨论】:

          猜你喜欢
          • 2013-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多