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

Unity中使用MoveTowards无法移动物体的问题求助

问题:枪械无法移动到"Aim Position"目标位置

我尝试将枪械移动到“Aim Position”所在的目标位置,但该功能无法正常生效。以下是我的实现代码:

public Transform aimPosition;
private float aimSpeed = 2f;

private void GunManager()
{
    if (Input.GetMouseButton(1))
    {
        transform.position = Vector3.MoveTowards(transform.position, aimPosition.position, aimSpeed * Time.deltaTime);
    }
}

枪械与Aim Position的层级示意图

排查方向与解决方案

  • 确保GunManager被调用:这个方法必须在Update()里执行,不然逻辑永远跑不起来。要么在Update()里调用GunManager(),要么直接把代码挪到Update()中。
  • 检查aimPosition赋值:去Inspector面板看枪械对象的这个字段,有没有把Aim Position的Transform拖进去。空引用的话,移动逻辑等于没写。
  • 调高aimSpeed测试:当前2的速度可能太慢,肉眼看不出移动,改成10、20这类数值试试效果。
  • 排查父对象干扰:如果枪械是某个物体的子物体,直接改transform.position可能会被父对象的变换影响,试试换成transform.localPosition,或者确保父对象没有额外的移动/缩放逻辑。
  • 验证鼠标输入是否正常:在if块里加Debug.Log("右键已按下"),看控制台有没有输出,排除输入设置的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:18:20