1. 打开输入管理界面,Edit->Project Setting->Input
  2. 最上面有一个Size,输入通道数,比如这个游戏需要用到20个操作键,那就是20.游戏中需要用到的按键分为两种,一种是开关键,就是只能两个状态的键,例如开火,跳;另一种是线性键(“轴”键),就是键值是在一个范围内取值的,例如控制前进后退的摇杆,推的角度可以控制人物行走的速度,线性键都是成对出现的,例如水平轴,垂直轴,扳机轴(左右扳机键是一对轴),一对轴算一个通道,一个开关键算一个通道.
  3. 手柄标记:
  4. 对于手柄上的开关键(就是只有0/1两个状态的键),获取状态的方法有两种:
    A.直接写代码
Input.GetKey(KeyCode.Joystick1Button0)
/*
说明:a.这个函数返回bool值,GetKey相当于"isKeyPress",GetKeyDown相当于"isKeyDown",GetKeyUp相当于"isKeyRelease"b.JoystickXButtonY,其中X可以取值为无或数字1~8,取数字时对应的是1~8号手柄,不取值的时候代表任意手柄;Y可以取值数字0~19,对应手柄上的20个开关键.所以理论上Unity3D最多同时支持8个手柄,最多支持手柄上带有20个开关键.
*/

B.使用输入管理器
使用Edit->Project Setting->Input:
先在Input面板中设定好Name和绑定的键位,然后写代码:

Input.GetAxis("A");
/*说明:a.这个函数返回的是float值,可以通过设定选择该值是否带有延迟,如果不设定,就默认是按下返回1,不按返回0.b.这个函数的效果相当于"isKeyPress"
*/

5 对于手柄上的”轴”键(就是线性开关,推动的力度不同效果不同,例如左右摇杆,扳机键),只能通过输入管理来处理:
使用Edit->Project Setting->Input:
先在Input面板中设定好Name和绑定的键位,然后写代码:

Input.GetAxis("Horizontal_L")
/*说明:a.这个函数返回的是float值,绑定到轴键上的时候,该函数的值会始终维持与轴的状态相同.b.这个函数的效果相当于"isKeyPress"c.轴键是两个方向一对的,例如水平方向是这样:最左边是-1,回中是0,最右边是+1.d.两个扳机键是一个轴,所以不用单独绑定两个扳机键,而是作为一个轴绑定.
*/

6 使用键盘
如果只使用键盘输入,可以在代码中直接检测按键,像这样:

Input.GetKeyDown(KeyCode.A)

当然也可以把键位绑定在输入管理里面然后用Input.GetAxis获取
7. 多种输入
有的时候我们需要多种输入方式,例如很多用手柄玩的游戏如果不插手柄,会有一套键盘鼠标的操作方法,这是怎么实现的呢?
方法1:
输入管理器中的通道是可以重名的,我们可以建两个同名的通道,在里面设置不同的键位,在代码里面检测这个通道是否有操作的时候,无论那个通道有操作,代码中都会有相同的反应.
方法2:
使用输入管理器中的Alt Negative Button和Alt Positive Button属性,这两个属性就是第二按键的意思,也就是说一个通道就能设置两种按键方式.
注意:方法1适用于线性按键,因为键盘鼠标都是瞬发开关键,用开关键模拟线性键需要设置延迟时间(例如W键按2秒以内是走,超过两秒是跑),而手柄摇杆本身就是线性键,不需要设置延迟,两套设置,必须占用两个通道;方法2适用于开关键,因为手柄上的开关键和键盘上的按键并没有什么区别,可以采用相同的延迟等设置.
8.Input Manager属性解释:

属性 作用
Name: [按键名]该键的名称,可以在脚本编程中直接引用他。比如:Input.GetButtonDown(“Jump”);
Descriptive Name: [描述名]在游戏的独立机构中的配置对话框中,当控制值为正时候所显示的名称。默认空白。
Negative Descriptive Name: [负描述]在游戏的独立机构中的配置对话框中,当控制值为负的时候所显示的名称。
Nagative Button: [负向按钮]玩家按下这个按钮来让被控制物体向负方向运动。
Positive Button: [正向按钮]玩家按下这个按钮让被控制物体向正方向运动。
Alt Negative Button: 玩家可以使用的备选负向按钮,比如方向键和WASD
Alt Positive Button: 玩家可以使用的备选正向按钮。
Gravity: [重力]如果玩家停止输入,该轴将恢复到空挡或0速度,其单位为单位每秒。
Dead: [盲区]可以用在模拟控制。在模拟控制器上,在这个范围内的任何值都会映射到空档不会提供任何输入。
Sensitivity: [灵敏度]可以用于数字控制,他是该轴向给定得值移动的速度。正负都可,单位为单位每秒。
Snap: [对齐]如果选中,可以确保在同时按下正向和负向按钮时候该轴的值为空挡。
Invert: [反转]迅速交换正向和负向控制键。
Type: [类型]该键对应的输入设备类型。可以为Key,MouseButton,MouseMove,JoystickAxis,或Window Movement。
Axis: [轴]这个控制方式有该输入设备的哪条轴指挥。这可受不同游戏手柄影响。
JoyNum: [手柄编号]可以指定某个特定的手柄或者任意手柄

9.可以填入button属性的值:

类型 填入button属性时的写法
标准键 “a”, “b”, “c” …
数字键 “1”, “2”, “3”, …
方向键 “up”, “down”, “left”, “right”
小键盘键 “[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
修改键 “right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
鼠标按钮 “mouse 0”, “mouse 1”, “mouse 2”, …
手柄按钮(从任意手柄) “joystick button 0”, “joystick button 1”, “joystick button 2”, …
手柄按钮(从指定手柄) “joystick 1 button 0”,”joystick 1 button 1”,”joystick 2 button 0”,”joystick 2 button 1” …
特殊键 “backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
功能键 “f1”, “f2”, “f3”, …

10.参考设置

Unity3D(1)手柄输入相关推荐

  1. 【Unity】Input——检测鼠标、键盘、手柄输入、鼠标在屏幕上的位置等等

    1.鼠标在屏幕上的位置 using System.Collections; using System.Collections.Generic; using UnityEngine;public cla ...

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

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

  3. 自定义HID手柄实现unity3D反馈手柄震动功能

    最近做毕业设计,需要用unity实现场景内的反馈到手柄的功能,授之以渔不如授之以鱼,耐心看完这片文章相信你可以diy自己的通用接口手柄.由于usb协议太过于复杂,C#也没有好用的HID设备类,找遍了内 ...

  4. unity3d VR手柄射线拾取,投掷,发射可拿去的物体

    using UnityEngine; /// <summary> /// 手柄射线原代码要添加好1. SteamVR_LaserPointer 2.SteamVR_TrackedContr ...

  5. c语言获取xbox手柄按键,让游戏支持手柄输入(控制台)字符打飞机

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //定义前景颜色 enum ConsoleTextColor{CTC_RED = FOREGROUND_INTENSITY | FOREGROUND_RE ...

  6. linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标

    查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键 ...

  7. unity3D VR手柄模型替换

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  8. c语言 手柄 api,让游戏支持手柄输入(控制台)字符打飞机

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //定义前景颜色 enum ConsoleTextColor{CTC_RED = FOREGROUND_INTENSITY | FOREGROUND_RE ...

  9. HTC VIVE Steam Plugins2.2版本 获取手柄输入

    1.将 SteamVR 这两个预设体拖到场景,删除原有MainCamera 第一种方式: 新建个脚本挂载到场景即可 using System.Collections; using System.Col ...

最新文章

  1. python字典相同key的值怎么分别取出_python字典值排序并取出前n个key值的方法
  2. c# 串口最简单接收十六进制
  3. L0,L1,L2范数
  4. 点到点链路的滑动窗口协议
  5. 无法连接本地计算机,xp系统电脑本地连接连不上如何解决
  6. 【JS】实时监控页面,input框数值自动求和
  7. LeetCode 700. 二叉搜索树中的搜索
  8. linux用usermod修改密码,Linux笔记(usermod命令,用户密码管理,mkpasswd)
  9. 今日恐慌与贪婪指数为38 恐慌程度明显上升
  10. 俄罗斯国有电信提供商被指大规模劫持网络流量,意外还是阴谋?
  11. POJ 3159 Candies 差分约束dij
  12. RK3399 Mali-T860占用率
  13. C/C++函数调用方式
  14. dnastar拼接反向互补序列_DNAstar使用说明
  15. 分类(四)—— 支持向量机
  16. 期货真的可以做到长期稳定盈利吗?
  17. 量化投资:研报文本挖掘选股策略
  18. 全国湿地分类数据:内陆沼泽、盐碱地、红树林、潮汐平地
  19. [杂言]打坐一定要盘腿么?
  20. DayDayUp:2021,再见了,无论是躺平还是内卷—愿大家改变不可接受的,接受不可改变的—心若有向往,何惧道阻且长

热门文章

  1. 《深入理解Linux网络技术内幕》阅读笔记(十一)
  2. C#实现电影院购票管理系统 - 附源码
  3. 复化辛甫生求积法matlab,数值分析习题.doc
  4. 金曜日威胁情报:重大数据泄露事件(万豪,戴尔)+各类新鲜APT攻击(朝韩俄等)报告...
  5. 统计字符串长度,strlen和sizeof有啥区别?
  6. 在职场上保持“升升”不息
  7. 十大最佳第二职业榜:软件开发、UI设计上榜
  8. 【xshell】XSHELL操作指南
  9. 游戏辅助 -- 走路call分析
  10. SpringBoot如何下载压缩文件