你可以使用协程 + Vector3.Lerp以指定的时间移动:
public IEnumerator MoveToPosition(Transform transform, Vector3 position, float timeToMove)
{
var currentPos = transform.position;
var t = 0f;
while(t <= 1f)
{
t += Time.deltaTime / timeToMove;
transform.position = Vector3.Lerp(currentPos, position, t);
yield return null;
}
transform.position = position;
}
您在 Start 方法中调用协程
StartCoroutine(MoveToPosition(transform, newposition, timeToMove))
您可以使用相同的逻辑进行旋转,四元数Lerp or Slerp and 四元数.LookRotation,当然你有很多随着时间的推移在网络上轮换的样本!谷歌是你的朋友...
public IEnumerator RotateToDirection(Transform transform, Vector3 position, float timeToRotate)
{
var startRotation = transform.rotation;
var direction = position - transform.position;
var finalRotation = Quaternion.LookRotation(direction);
var t = 0f;
while (t <= 1f)
{
t += Time.deltaTime / timeToRotate;
transform.rotation = Quaternion.Lerp(startRotation, finalRotation, t);
yield return null;
}
transform.rotation = finalRotation;
}