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

如何在Unity旧Input Manager中获取Xbox/PS5手柄摇杆输入强度?

在Unity旧Input Manager中获取手柄摇杆输入强度的方法

你当前只能得到-1、0、1的数字值,核心原因是轴的配置为数字输入模式,只需调整Input Manager的轴设置并使用正确的API即可获取连续的模拟输入强度(范围-1到1)。

1. 配置Input Manager的摇杆轴

打开Unity编辑器,依次进入 Edit > Project Settings > Input Manager,找到或创建对应摇杆的轴:

  • 将轴的Type设置为Joystick Axis
  • 根据摇杆选择对应的Axis:
    • Xbox/PS5左摇杆X轴:选X Axis,左摇杆Y轴:选Y Axis
    • Xbox/PS5右摇杆X轴:选3rd Axis,右摇杆Y轴:选4th Axis
  • 调整Dead值(死区):建议设为0.1,过滤摇杆中心的微小抖动;若需要无死区的精确输入,可设为0
  • Gravity设为0(模拟摇杆无需自动归位),Sensitivity设为1(保证输入线性)
  • Joy Num可选择Get Motion From All Joysticks,或指定手柄编号(多手柄场景)

2. 代码中获取模拟输入值

使用Input.GetAxisRaw()获取原始无平滑的输入值,或Input.GetAxis()获取带平滑过渡的输入值,二者均返回-1到1之间的连续数值:

void Update()
{
    // 获取左摇杆的X/Y轴输入强度
    float leftStickX = Input.GetAxisRaw("Horizontal");
    float leftStickY = Input.GetAxisRaw("Vertical");

    // 获取右摇杆的X/Y轴输入强度(需先在Input Manager中创建对应轴,例如命名为RightStickX、RightStickY)
    float rightStickX = Input.GetAxisRaw("RightStickX");
    float rightStickY = Input.GetAxisRaw("RightStickY");

    // 计算摇杆的总输入强度(模长,范围0到1)
    Vector2 leftStickVec = new Vector2(leftStickX, leftStickY);
    float leftStickMagnitude = leftStickVec.magnitude;

    // 输出测试
    Debug.Log($"左摇杆输入:X={leftStickX:F2}, Y={leftStickY:F2}, 强度={leftStickMagnitude:F2}");
}

注意事项

  • 不要使用Input.GetButton()/Input.GetButtonDown()这类数字输入API,它们仅返回布尔值对应的-1/0/1
  • Xbox与PS5手柄在旧Input Manager中的摇杆轴映射通用,无需单独适配基础摇杆输入
  • 若存在多手柄场景,可通过设置Joy Num为指定编号(如1、2)来区分不同手柄的输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:16:12