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

Unity C#开发中玩家物体移动速度过快问题求解

问题原因

  • 代码中两次调用了transform.Translate,左右偏移量swerveAmount被重复叠加,相当于左右移动速度直接翻倍
  • 第二次Translate的z轴参数直接写了固定值1,没有乘以Time.deltaTime,导致每帧都往前移动1个单位,帧率越高移动速度越快,完全没有按你设置的verticalSpeed参数控制

修复后代码

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

public class PlayerController : MonoBehaviour{
    
    private SwerveInputSystem _swerveInputSystem;
    [SerializeField] private float swerveSpeed = 5f;
    [SerializeField] private float maxSwerveAmount = 1f;
    [SerializeField] private float verticalSpeed = 3f; // 可直接在Inspector面板调整数值控制前进速度

    void Start(){
        _swerveInputSystem = GetComponent<SwerveInputSystem>();
    }

    void Update(){
        float swerveAmount = Time.deltaTime * swerveSpeed * _swerveInputSystem.MoveFactorX;
        swerveAmount = Mathf.Clamp(swerveAmount, -maxSwerveAmount, maxSwerveAmount);
        float verticalDelta = verticalSpeed * Time.deltaTime;

        // 单次调用Translate即可,根据你的游戏方向调整y、z轴的赋值
        transform.Translate(swerveAmount, 0, verticalDelta);
        // 如果前进方向是y轴,就替换为下面这句
        // transform.Translate(swerveAmount, verticalDelta, 0);
    }
}

后续调整建议

  • 所有移动速度参数不需要改代码,直接在Unity Inspector面板调整对应字段的数值即可:swerveSpeed控制左右移动灵敏度,verticalSpeed控制自动前进的速度
  • 如果玩家是带刚体的物理对象,建议把移动逻辑放到FixedUpdate里执行,避免帧率波动导致移动速度不稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:27:00