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

Unity第一人称玩家移动速度过慢问题求助

问题分析与修复

核心速度过慢原因

你在FixedUpdate中给Rigidbody.velocity赋值时,错误地乘以了Time.deltaTime。Rigidbody.velocity的单位是米/秒,本身已经是瞬时速度,不需要用Time.deltaTime进行缩放——这个操作会把速度缩小几十倍(Time.deltaTime在FixedUpdate中通常是0.02左右),这就是速度极慢的根本原因。

其他代码问题

除了速度问题,你的脚本还有两个关键错误:

  1. 玩家旋转逻辑错误:直接使用cam.transform.rotation.y(四元数的分量)并乘以Time.deltaTime,导致旋转速度几乎为0,且无法正确跟随相机方向。
  2. 移动向量映射错误:把前后输入(Vertical)绑定到了左右方向(transform.right),左右输入(Horizontal)绑定到了前后方向(transform.forward),导致移动方向与输入不符。
  3. 无用的Up变量:定义后未使用,属于冗余代码。

修复后的完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    private Rigidbody RB;
    [SerializeField] private GameObject cam;

    private float walkVel; // 前后移动输入
    private float strafeVel; // 左右移动输入
    [SerializeField] public float walkSpeed = 5f;

    private void Start()
    {
        RB = GetComponent<Rigidbody>();
    }

    private void Update()
    {
        walkVel = Input.GetAxis("Vertical");
        strafeVel = Input.GetAxis("Horizontal");
    }

    private void FixedUpdate()
    {
        // 让玩家跟随相机的Y轴旋转(保持水平方向一致)
        transform.rotation = Quaternion.Euler(0f, cam.transform.eulerAngles.y, 0f);

        // 计算移动向量:前后对应forward,左右对应right
        Vector3 moveDir = transform.forward * walkVel + transform.right * strafeVel;
        // 保留原Y轴速度(避免抵消重力/跳跃速度),只修改XZ平面速度
        RB.velocity = new Vector3(moveDir.normalized.x * walkSpeed, RB.velocity.y, moveDir.normalized.z * walkSpeed);
    }
}

关键修改说明

  1. 移除Time.deltaTime:直接用walkSpeed控制米/秒级的速度,恢复正常移动速率。
  2. 修正旋转逻辑:使用cam.transform.eulerAngles.y获取相机的水平旋转角度,直接赋值给玩家的Y轴旋转,确保玩家朝向与相机水平方向一致,解决“不沿相机方向移动”的问题。
  3. 修正移动映射:将walkVel(前后输入)绑定到transform.forward,strafeVel(左右输入)绑定到transform.right,让输入与移动方向匹配。
  4. 保留Y轴速度:修改RB.velocity时保留原有的Y轴分量,避免覆盖重力或后续添加的跳跃逻辑。

补充说明

你之前增大walkSpeed能提升速度,本质是通过放大数值抵消了Time.deltaTime的缩小作用,但这是治标不治本的方案。修复上述问题后,walkSpeed = 5f就能恢复到正常的移动速率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:22