如何在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
- Xbox/PS5左摇杆X轴:选
- 调整
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
相关产品推荐
相关产品推荐

