You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3D物体向Y轴变向移动目标直线运动轨迹异常的解决方法

解决3D物体直线追踪动态目标的问题

问题根源

你当前使用Vector3.MoveTowards时,每帧都是朝着目标当前所在位置移动。当目标沿Y轴改变运动方向时,每帧的目标点会连续变化,导致物体的移动方向逐帧微调,最终形成弧线轨迹。

解决方案

替换原有代码,改为沿指向目标的方向向量直接移动,而非逐帧向目标当前位置逼近。这样物体每帧都会朝向目标的实时位置,保持直线运动:

// 计算物体指向目标的方向向量
Vector3 targetDirection = target.position - object.position;
float moveDistance = Time.deltaTime * _objectSpeed;

// 避免距离过近时超过目标
if (targetDirection.magnitude <= moveDistance)
{
    object.position = target.position;
}
else
{
    // 归一化方向向量,保证移动速度稳定
    Vector3 normalizedDirection = targetDirection.normalized;
    object.position += normalizedDirection * moveDistance;
}

// 保持物体朝向目标
object.up = targetDirection.normalized;

原理说明

  • Vector3.MoveTowards的逻辑是让物体每帧向目标点移动固定距离,当目标移动时,相当于每帧的终点在动态变化,路径自然会呈现弧线。
  • 直接沿方向向量移动时,物体每帧的运动方向都指向目标的实时位置,即使目标改变方向,物体的运动方向也会立刻更新,轨迹始终是朝向目标的直线段(而非弧线)。

内容的提问来源于stack exchange,提问作者Operator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:31