可以使用以下 C# 脚本在 Unity 中实现物体在规定时间内由一点移动到另一点:

using UnityEngine;

public class MoveObject : MonoBehaviour
{
    public Transform startPoint; // 起始点
    public Transform endPoint; // 终止点
    public float duration = 1.0f; // 移动时间

    private float timer = 0.0f; // 计时器

    private void Update()
    {
        timer += Time.deltaTime; // 增加计时器的时间

        if (timer < duration) // 如果还没到达终点
        {
            float t = timer / duration; // 计算移动比例
            transform.position = Vector3.Lerp(startPoint.position, endPoint.position, t); // 插值移动
        }
        else // 如果已经到达终点
        {
            transform.position = endPoint.position; // 设置到终点位置
        }
    }
}

将该脚本挂载到需要移动的物体上,设置起始点和终止点的位置,以及移动时间,即可实现物体在规定时间内由一点移动到另一点的效果。

解释:

  • startPoint 和 endPoint:分别代表物体移动的起始点和终止点。
  • duration:代表物体完成移动所需的时间。
  • timer:计时器,记录当前已经过去了多少时间。
  • Lerp:线性插值函数,用于根据移动比例计算物体在当前时间点的位置。

步骤:

  1. 创建一个新的 C# 脚本,并将其命名为 MoveObject。
  2. 将脚本挂载到需要移动的物体上。
  3. 在场景中创建两个空物体,分别作为起始点和终止点。
  4. 将脚本中的 startPoint 和 endPoint 变量分别拖动到这两个空物体上。
  5. 设置 duration 变量的值,代表移动所需的时间。
  6. 运行游戏,观察物体在指定时间内从起点移动到终点的效果。

提示:

  • 可以通过调整 duration 变量的值来控制移动速度。
  • 可以使用其他动画曲线函数,例如 SmoothStep 或 Ease,来创建更复杂的移动轨迹。
  • 可以将此脚本扩展为支持多个移动路径,实现更复杂的移动效果。
Unity C# 代码实现物体在规定时间内移动 - 从起点到终点

原文地址: https://www.cveoy.top/t/topic/owCs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录