用transform.Translate移动我的对象让它以错误的方式移动

时间:2016-02-05 20:06:14

标签: vector unity3d

我正在努力尝试翻译一个简单的对象。对象在三维世界中移动,但仅在x和z轴上移动。我正在使用的函数是我的gameobject变换的Translate函数。 x和z是我试图移动物体的位置。

transform.Translate (( new Vector3(x - transform.position.x ,0,z - transform.position.z)).normalized * Time.deltaTime  * speed,Space.World);

所以这就是我正在处理的问题:如果我的计算结果是以下向量:(0,0,-1.0),我的对象在错误的方向上缓慢移动。

示例:

起始位置(25.16, 1.0, 12.0) 翻译函数后的最终位置:(25.6, 1.0, 12.1)

任何帮助都可以帮助我理解这一点。

1 个答案:

答案 0 :(得分:0)

我在我的一个项目中使用此脚本将GameObject移动到某个点,只需将其附加到您的游戏对象上,然后在FinPos中输入您的x和y。

using UnityEngine;

    public class MovementAnimation : MonoBehaviour
    {  
        public Vector3 FinPos;
        public bool Loop = true;
        public int Speed = 1;

        private Vector3 StartPos;
        private float startTime;
        private float lenght;

        void Start ()
        {
            StartPos = this.transform.position;
            startTime = Time.time;
            lenght = Vector3.Distance(StartPos, FinPos);
        }

        void Update ()
        {
            if (this.transform.position == FinPos)
            {
                if (Loop)
                {
                    this.transform.position = StartPos;
                    startTime = Time.time;
                }
            }
            else
            {
                float distance = (Time.time - startTime) * Speed;
                this.transform.position = Vector3.Lerp(StartPos, FinPos, distance / lenght);
            }
        }
    }