一个简单的实例,演示了如何使用Vector3.Lerp来实现物体在两个位置之间平滑移动的效果:
using UnityEngine;
public class ObjectMovement : MonoBehaviour
{
public Transform startPoint;
public Transform endPoint;
public float moveDuration = 2f;
private float elapsedTime = 0f;
private bool isMoving = false;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && !isMoving)
{
StartMoving();
}
if (isMoving)
{
MoveObject();
}
}
private void StartMoving()
{
elapsedTime = 0f;
isMoving = true;
}
private void MoveObject()
{
elapsedTime += Time.deltaTime;
if (elapsedTime >= moveDuration)
{
// 移动完成
transform.position = endPoint.position;
isMoving = false;
}
else
{
// 在起始点和结束点之间平滑移动
float t = elapsedTime / moveDuration;
transform.position = Vector3.Lerp(startPoint.position, endPoint.position, t);
}
}
}

当按下space键的时候,正方形从开始点到结束点平滑移动,lerp函数不断生成中间经过的点
![[PMLR 2021] Zero-Shot Text-to-Image Generation:零样本文本到图像生成](https://img-blog.csdnimg.cn/img_convert/eae8c832d9fd3e9b696a3f02bb50b96a.png)


















