Unity【XBox One】- 手柄输入的配置与使用

举报
CoderZ1010 发表于 2022/09/25 05:42:18 2022/09/25
【摘要】 在Unity中使用XBox手柄进行输入的控制管理,首先需要在Project Settings / Input Manager中进行按键的配置,下图是Unity默认的Input Manager配置: XBox的按键在Unity中的对应关系如下: using UnityEngine; namespace SK.Framework{ ...

在Unity中使用XBox手柄进行输入的控制管理,首先需要在Project Settings / Input Manager中进行按键的配置,下图是Unity默认的Input Manager配置:

XBox的按键在Unity中的对应关系如下:


      using UnityEngine;
      namespace SK.Framework
      {
         /// <summary>
         /// XBox按键
         /// </summary>
         public class XBox
          {
             /// <summary>
             /// 左侧摇杆水平轴
             /// X axis
             /// </summary>
             public const string LeftStickHorizontal = "LeftStickHorizontal";
             /// <summary>
             /// 左侧摇杆垂直轴
             /// Y axis
             /// </summary>
             public const string LeftStickVertical = "LeftStickVertical";
             /// <summary>
             /// 右侧摇杆水平轴
             /// 4th axis
             /// </summary>
             public const string RightStickHorizontal = "RightStickHorizontal";
             /// <summary>
             /// 右侧摇杆垂直轴
             /// 5th axis
             /// </summary>
             public const string RightStickVertical = "RightStickVertical";
             /// <summary>
             /// 十字方向盘水平轴
             /// 6th axis
             /// </summary>
             public const string DPadHorizontal = "DPadHorizontal";
             /// <summary>
             /// 十字方向盘垂直轴
             /// 7th axis
             /// </summary>
             public const string DPadVertical = "DPadVertical";
             /// <summary>
             /// LT
             /// 9th axis
             /// </summary>
             public const string LT = "LT";
             /// <summary>
             /// RT
             /// 10th axis
             /// </summary>
             public const string RT = "RT";
             /// <summary>
             /// 左侧摇杆按键
             /// joystick button 8
             /// </summary>
             public const KeyCode LeftStick = KeyCode.JoystickButton8;
             /// <summary>
             /// 右侧摇杆按键
             /// joystick button 9
             /// </summary>
             public const KeyCode RightStick = KeyCode.JoystickButton9;
             /// <summary>
             /// A键
             /// joystick button 0
             /// </summary>
             public const KeyCode A = KeyCode.JoystickButton0;
             /// <summary>
             /// B键
             /// joystick button 1
             /// </summary>
             public const KeyCode B = KeyCode.JoystickButton1;
             /// <summary>
             /// X键
             /// joystick button 2
             /// </summary>
             public const KeyCode X = KeyCode.JoystickButton2;
             /// <summary>
             /// Y键
             /// joystick button 3
             /// </summary>
             public const KeyCode Y = KeyCode.JoystickButton3;
             /// <summary>
             /// LB键
             /// joystick button 4
             /// </summary>
             public const KeyCode LB = KeyCode.JoystickButton4;
             /// <summary>
             /// RB键
             /// joystick button 5
             /// </summary>
             public const KeyCode RB = KeyCode.JoystickButton5;
             /// <summary>
             /// View视图键
             /// joystick button 6
             /// </summary>
             public const KeyCode View = KeyCode.JoystickButton6;
             /// <summary>
             /// Menu菜单键
             /// joystick button 7
             /// </summary>
             public const KeyCode Menu = KeyCode.JoystickButton7;
          }
      }
  
 

根据上面的对应关系,在Input Manager中间配置,例如Left Stick Horizontal,即手柄左侧摇杆的水平轴,对应的Axis为X axis,那么它在Input Manager中的配置如下:

右侧摇杆的垂直轴对应的Axis为5th axis,那么它在Input Manager中的配置如下:

同理进行其他按键的配置:

可直接编辑项目根目录下ProjectSettings文件夹中的InputManager.asset内容,使用以下内容覆盖:


      %YAML 1.1
      %TAG !u! tag:unity3d.com,2011:
      --- !u!13 &1
      InputManager:
        m_ObjectHideFlags: 0
        serializedVersion: 2
        m_Axes:
        - serializedVersion: 3
          m_Name: LeftStickHorizontal
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 0
         type: 2
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: LeftStickVertical
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 1
         type: 2
          axis: 1
          joyNum: 0
        - serializedVersion: 3
          m_Name: A
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: B
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 1
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: X
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 2
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: Y
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 3
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: LB
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 4
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: RB
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 5
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: LeftStick
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 8
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: RightStick
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 9
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: View
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 6
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: Menu
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton: joystick button 7
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.001
          sensitivity: 1
          snap: 0
          invert: 0
         type: 0
          axis: 0
          joyNum: 0
        - serializedVersion: 3
          m_Name: LT
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 0
         type: 2
          axis: 8
          joyNum: 0
        - serializedVersion: 3
          m_Name: RT
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 0
         type: 2
          axis: 9
          joyNum: 0
        - serializedVersion: 3
          m_Name: DPadHorizontal
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 0
         type: 2
          axis: 5
          joyNum: 0
        - serializedVersion: 3
          m_Name: DPadVertical
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 1
         type: 2
          axis: 6
          joyNum: 0
        - serializedVersion: 3
          m_Name: RightStickHorizontal
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 1
         type: 2
          axis: 3
          joyNum: 0
        - serializedVersion: 3
          m_Name: RightStickVertical
          descriptiveName:
          descriptiveNegativeName:
          negativeButton:
          positiveButton:
          altNegativeButton:
          altPositiveButton:
          gravity: 0
          dead: 0.19
          sensitivity: 1
          snap: 0
          invert: 1
         type: 2
          axis: 4
          joyNum: 0
  
 

附上XBox的按键说明:

测试脚本:


      using UnityEngine;
      using SK.Framework;
      public class Example : MonoBehaviour
      {
         private void Update()
          {
             if (Input.GetKeyDown(XBox.A)) Debug.Log("A");
             if (Input.GetKeyDown(XBox.B)) Debug.Log("B");
             if (Input.GetKeyDown(XBox.X)) Debug.Log("X");
             if (Input.GetKeyDown(XBox.Y)) Debug.Log("Y");
             if (Input.GetKeyDown(XBox.LB)) Debug.Log("LB");
             if (Input.GetKeyDown(XBox.RB)) Debug.Log("RB");
             if (Input.GetKeyDown(XBox.View)) Debug.Log("View");
             if (Input.GetKeyDown(XBox.Menu)) Debug.Log("Menu");
             float lh = Input.GetAxis(XBox.LeftStickHorizontal);
             float lv = Input.GetAxis(XBox.LeftStickVertical);
             float rh = Input.GetAxis(XBox.RightStickHorizontal);
             float rv = Input.GetAxis(XBox.RightStickVertical);
             float lt = Input.GetAxis(XBox.LT);
             float rt = Input.GetAxis(XBox.RT);
             float dPadH = Input.GetAxis(XBox.DPadHorizontal);
             float dPadV = Input.GetAxis(XBox.DPadVertical);
             if (lh != 0) Debug.Log($"LH:{lh}");
             if (lv != 0) Debug.Log($"LV:{lv}");
             if (rh != 0) Debug.Log($"RH:{rh}");
             if (rv != 0) Debug.Log($"RV:{rv}");
             if (lt != 0) Debug.Log($"LT:{lt}");
             if (rt != 0) Debug.Log($"RT:{rt}");
             if (dPadH != 0) Debug.Log($"DPadH:{dPadH}");
             if (dPadV != 0) Debug.Log($"DPadV:{dPadV}");
          }
      }
  
 

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/123256358

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。