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

Unity角色移动异常求助:移动时突然停止需切换方向恢复

Unity角色移动突然停止问题排查与修复

问题描述

移动角色时会突然停止,需切换方向后切回原方向才能继续移动,且Horizontal输入值正常,无特定停止位置。

代码分析

当前脚本类名CharacterController与Unity内置的CharacterController组件重名,这会引发命名空间冲突,即便你获取的是Rigidbody2D,类名冲突仍可能干扰Unity的组件查找或逻辑执行机制,是这类诡异问题的常见诱因。

此外还需排查以下潜在问题:

  • Rigidbody2D设置:是否意外勾选了冻结位置X?或重力、阻力参数设置异常?
  • 碰撞体冲突:是否存在不可见碰撞体或场景物体触发意外碰撞,导致角色被卡住?

修复方案

1. 重命名脚本类(优先处理)

将脚本类名改为非Unity内置组件的名称,比如PlayerMovement,同时修改脚本文件名(必须与类名一致):

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    private float horizontal;
    private float speed = 5f;
    private Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        horizontal = Input.GetAxis("Horizontal");
    }

    private void FixedUpdate()
    {
        rb.velocity = new Vector2(speed * horizontal, rb.velocity.y);
    }
}

2. 检查Rigidbody2D参数

选中角色对象,在Inspector面板查看Rigidbody2D组件:

  • 确保Constraints下的Freeze Position X未被勾选
  • 调整Linear Drag(线性阻力)至合理值(建议0.1~1之间,避免阻力过大导致突然停止)

3. 排查碰撞体问题

  • 检查角色及场景中的碰撞体,确保没有重叠或异常的碰撞区域;
  • 开启Gizmos显示碰撞体,观察移动过程中是否有意外碰撞触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:27:24