我正在努力尝试翻译一个简单的对象。对象在三维世界中移动,但仅在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)
任何帮助都可以帮助我理解这一点。
答案 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);
}
}
}