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

Unity玩家因脚本导致下落过慢问题求助

解决Unity玩家下落过慢的问题(脚本导致)

问题根源

你的代码中FixedUpdate里的这一行直接覆盖了Rigidbody的速度:

rb.velocity = moveDirection * speed;

由于moveDirection是通过Vector3.ProjectOnPlane计算的水平方向向量(y轴分量为0),这会把Rigidbody的y轴速度强制设为0,完全抵消了Unity物理引擎的重力效果,导致玩家下落速度异常缓慢。

修复方法

只修改速度的水平分量(x、z轴),保留原本的y轴速度(由重力控制):

// 替换原来的rb.velocity赋值行
rb.velocity = new Vector3(moveDirection.x * speed, rb.velocity.y, moveDirection.z * speed);

这样既保留了玩家的移动控制,又不会干扰重力带来的下落加速度,玩家下落速度就能恢复正常。

额外优化建议

  • 斜向移动时,moveDirection.Normalize()会让斜向移动速度和单方向移动速度一致(归一化后向量长度固定为1),如果想让斜向移动速度不超过单方向速度,可以用Vector3.ClampMagnitude替代归一化:
    Vector3 moveDirection = cameraForward * verticalInput + cameraRight * horizontalInput;
    moveDirection = Vector3.ClampMagnitude(moveDirection, 1f); // 限制向量最大长度为1
    
  • 输入检测部分可以简化,直接用moveDirection是否为空判断移动状态,不需要逐个检测按键:
    anim.SetInteger("swr", moveDirection != Vector3.zero ? 1 : 0);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:07:23