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

Unity中使用Rewired的第三人称角色控制器移动方向异常问题

问题解决:Rewired控制3D角色移动时出现上下位移而非前后移动

问题根源

Unity 3D空间的轴定义:

  • X轴对应左右方向
  • Y轴对应上下方向
  • Z轴对应前后方向

你当前代码把Vertical输入(对应前后的输入信号)赋值给了moveVector.y,直接导致角色沿Y轴(上下)移动,而非预期的Z轴(前后)移动。

修复方案

1. 修正轴的赋值逻辑

修改GetInput方法,将前后输入对应到Z轴:

private void GetInput()
{
    moveVector.x = player.GetAxis("Horizontal"); // 左右输入绑定X轴
    moveVector.z = player.GetAxis("Vertical");   // 前后输入绑定Z轴
    fire = player.GetButtonDown("Fire");
}

2. 适配角色转向(可选但推荐)

如果角色需要转向后保持输入方向与视角一致,需将世界空间的移动向量转换为角色本地坐标系方向:
修改ProcessInput中的移动代码:

private void ProcessInput()
{
    // 处理移动
    if(moveVector.x != 0.0f || moveVector.z != 0.0f)
    {
        // 将世界空间向量转为角色本地空间,保证转向后移动方向匹配视角
        Vector3 localMove = transform.TransformDirection(moveVector);
        cc.Move(localMove * moveSpeed * Time.deltaTime);
    }

    // 其余开火代码保持不变...
}

3. 移除冲突组件(关键)

你同时使用了CharacterController和Rigidbody,这两个组件会互相干扰(CharacterController会接管物理移动,Rigidbody的力会被覆盖)。如果用CharacterController做移动,需:

  • 删除脚本中的public Rigidbody rb;引用
  • 移除角色对象上的Rigidbody组件
  • 改用CharacterController实现跳跃(需自行处理重力和落地检测):
// 添加重力与垂直速度变量
private float gravity = 9.8f;
private float verticalVelocity = 0;

private void ProcessInput()
{
    Vector3 moveDirection = Vector3.zero;

    // 处理水平移动
    if(moveVector.x != 0.0f || moveVector.z != 0.0f)
    {
        moveDirection = transform.TransformDirection(moveVector);
    }

    // 处理重力与跳跃
    if(cc.isGrounded)
    {
        verticalVelocity = 0;
        if(player.GetButtonDown("Jump"))
        {
            verticalVelocity = Mathf.Sqrt(jumpForce * 2 * gravity);
        }
    }
    else
    {
        verticalVelocity -= gravity * Time.deltaTime;
    }

    moveDirection.y = verticalVelocity;
    cc.Move(moveDirection * moveSpeed * Time.deltaTime);

    // 其余开火代码保持不变...
}

额外检查点

  • 确认Rewired输入映射中,Horizontal绑定左右按键(如A/D、左摇杆左右),Vertical绑定前后按键(如W/S、左摇杆前后)
  • 可在Scene视图中观察角色的轴方向,验证X/Z轴是否符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:57:17