在Unity中,transform.Translate()是一个用于移动游戏对象相对于其当前位置的函数。该函数需要一个矢量作为参数,代表游戏对象应该移动的方向和距离。这是一个方便的方法来移动对象而不直接操作它们的位置。
下面是一个例子,说明如何将游戏对象从A点移动到B点:
首先,让我们创建一个新的脚本,将其命名为 “MoveObject”,并将其附加到你要移动的游戏对象上。
在你的代码编辑器中打开该脚本。
在脚本中,声明几个变量:
Vector3 pointA: 对象的起始位置。
Vector3 pointB: 对象的目标位置。
float speed: 对象移动的速度。
float journeyFraction:一个变量,用于存储对象从pointA到pointB的运动进度。
在Start()函数中,将点A设置为对象的当前位置,点B设置为期望的目的地。
同时,初始化速度和旅程分数变量:
public class MoveObject : MonoBehaviour
{
public Vector3 pointA;
public Vector3 pointB;
public float speed;
private float journeyFraction;
void Start()
{
pointA = transform.position;
pointB = new Vector3(5, 0, 0); // Set this to the desired destination coordinates
speed = 1.0f;
journeyFraction = 0.0f;
}
}
在Update()函数中,根据速度和Time.deltaTime更新journeyFraction变量。使用Vector3.Lerp()在点A和点B之间基于journeyFraction进行插值。最后,使用transform.position来设置对象的新位置:
void Update()
{
if (journeyFraction < 1.0f)
{
journeyFraction += Time.deltaTime * speed;
transform.position = Vector3.Lerp(pointA, pointB, journeyFraction);
}
}
现在,当你在Unity中运行你的游戏时,附有 “MoveObject “脚本的游戏对象将以给定的速度从它的起始位置(A点)移动到指定的目的地(B点)。这个运动将是平滑的,因为它是基于两点之间的插值。