微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【Unity笔记】Unity中的输入与控制

参考书籍:Unity5.X 从入门到精通

Input Manager(输入管理器)

0.1 Input类 成员变量

成员变量描述
acceleration获取设备当前在三维空间中的线性加速度只读
accelerationEventCount得到上一帧的加速度参数数据长度
accelerationEvents得到上一帧的加速度数据列表(分配临时变量)只读
anyKey是否有按键按下只读
anyKeyDown当有任意按键按下的第一帧返回true只读
compass罗盘属性(仅支持手持设备)只读
compensateSensors是否根据屏幕方向补偿感应器
compositionCursorPos当前IME组合字符串的光标位置
compositionString用户通过IME输入端组合字符串
deviceOrientation操作系统提供的设备方向(只读)
gyro返回认的陀螺仪
imeCompositionMode设置IME组合模式
imelsSelected当前是否启用了IME输入键盘
inputString得到当前帧的键盘输入字符串只读
location设备当前的位置属性(仅支持手持设备)只读
mousePosition鼠标位置的像素坐标只读
multiTouchEnabled系统是否支持多点触摸
simulateMouseWithtouches屏幕触控模拟鼠标点击
touchCount当前所有触摸状态列表长度只读
touches当前所有触摸状态列表(分配临时变量)只读
touchSupported返回应用程序正在运行的设备是否支持触摸输入

0.2 Input类 成员函数

成员函数描述
GetaccelerationEvent()返回指定的上一帧加速度测量数据(不分配临时变量)
GetAxis()根据名称得到虚拟输入轴的值
GetAxisRaw()根据名称得到虚拟坐标轴的未使用平滑过滤的值
GetButton()如果指定名称的虚拟按键被按下,返回true
GetButtonDown()指定名称的虚拟按键被按下的那一帧,返回true
GetButtonUp()指定名称的虚拟按键被松开的那一帧,返回true
GetJoystickNames()返回当前连接的所有摇杆的名称数组
GetKey()当指定按键被按下时返回true
GetKeyDown()当指定按键被按下的那一帧返回true
GetKeyUp()当指定按键被松开的那一帧返回true
GetMouseButton()指定的鼠标按键是否按下
GetMouseButtonDown()指定的鼠标按键按下的那一帧返回true
GetMouseButtonUp()指定的鼠标按键松开的那一帧返回true
GetTouch()返回指定的触摸数据对象(不分配临时变量)
IsJoystickPreconfigured配置认的摇杆输出(只限Linux)
ResetInputAxes重置所有输入,调用方法后所有方向轴
  • Key:与物理按键对应。可通过按键名称或按钮编码KeyCode获取输入状态。
  • Button:输入管理器(Input Manager)中定义的虚拟按键。
  • Axis:模拟平滑变化的输入,例如摇杆、方向盘。

一、鼠标输入

1.1 鼠标输入 成员变量

成员变量描述
mousePosition得到当前鼠标位置Vector3

1.2 鼠标输入 成员方法

成员函数描述
GetMouseButtonDown()鼠标按键按下的第一帧返回true
GetMouseButtonUp()鼠标按键松开的第一帧返回true
GetMouseButton()鼠标按键按下期间一直返回true
GetAxis("Mouse X")得到一帧内鼠标在水平方向的移动距离
GetAxis("Mouse Y")得到一帧内鼠标在垂直方向的移动距离

Unity中,鼠标位置用屏幕像素坐标表示,屏幕左下角为坐标原点(0, 0),右上角为(Screen.width, Screen.height)

  • Screen.width:屏幕分辨率的宽度
  • Screen.height:屏幕分辨率的高度

mousePosition:Vector3类型 (x, y, z)

  • x:水平坐标
  • y:垂直坐标
  • z:始终为0

二、键盘操作

2.1 键盘输入 成员方法

成员方法描述
GetKey()按键按下期间返回true
GetKeyDown()按键按下的第一帧返回true
GetKeyUp()按键松开的第一帧返回true
GetAxis("Horizontal")GetAxis("Vertical")用方向键或W、A、S、D键来模拟-1到1的平滑输入

2.2 常用按键名与KeyCode编码

键盘按键NameKeyCode
字母键A、B、C…Za、b、c…zABCZ
数字键0~90~9Alpha0~Alpha9
功能键F1~F12f1~f12F1~F12
退格键backspaceBackspace
回车键returnReturn
空格键spaceSpace
退出escEsc
Tab键tabTab
上下左右方向键up、down、left、rightUpArrowDownArrowLeftArrowRightArrow
左、右Shift键left shift、right shiftLeftShiftRightShift
左、右Alt键left alt、right altLeftAltRightAlt
左、右Ctrl键left ctrl、right ctrlLeftCtrlRightCtrl

三、游戏外设输入

3.1 外设输入 成员方法

成员方法描述
GetAxis()得到输入轴的值
GetAxisRaw()得到未经平滑处理的输入轴的数值
GetButton()虚拟键按下期间一直返回true
GetButtonDown()虚拟键按下的第一帧返回true
GetButtonUp()虚拟键松开的第一帧返回true
  • Unity认为用户创建 Fire1、Fire2、Fire3、Jump以及虚拟轴Horizontal和Vertical。

四、移动设备的输入

IOS与Android系统中的操作通过触摸完成。(以前是按键)

4.1 移动端输入 成员变量

成员变量描述
multiTouchEnabled系统是否支持多点触摸
simulateMouseWithtouches屏幕触控模拟鼠标点击
touchCount当前所有触摸状态列表长度只读
touches当前所有触摸状态列表(分配临时变量)只读
touchSupported返回应用程序正在运行的设备是否支持触摸输入

4.2 移动端输入 成员方法

成员方法描述
GetTouch()返回指定的触摸数据对象(不分配临时变量)

4.3 结构体Touch的变量

通过GetTouch()或者touches可访问移动设备的触摸数据,数据保存在Touch的结构体中,结构体Touch的变脸如下所示:

变量说明
fingerld触摸数据的唯一索引id
position触摸的位置
deltaPosition触摸位置的改变量
deltaTime距离上次触摸数据变化的时间间隔
taoCount单击计数
phase触摸的状态描述

通过吊桶phase可访问当前触摸状态,状态如下所示:

变量说明
Began手指刚触碰屏幕
Moved手指在屏幕上移动
Stationary手指触碰屏幕并从上一帧起没有移动
Ended手指离开屏幕
Cancled系统取消了跟踪触摸

五、自定义输入

创建自定义虚拟按键:

  • 打开Unity菜单栏 -> Editor -> Project Setting
  • 选择Input分栏

认情况下Unity创建了18个输入轴(Axes),具体参数如下:

参数说明
Axes包含当前工程所有定义的轴,Size为轴的数量
Name输入轴名称,用于游戏启动时的配置见面和脚本访问
Descriptive Name轴的正按键的描述(在游戏启动界面中显示
Descriptive Negative Name轴的负按的键描述(在游戏启动界面中显示
Negative Button轴的负按键对应的物理按键
Positive Button轴的正按键对应的物理按键
Alt Negative Button轴的负按键对应的备选物理按键
Alt Positive Button轴的正按键对应的备选物理按键
Gravity输入的复位速度,仅用于类型为键、鼠标的按键
Dead小于该值的任何输入值(不论正负值)都会视为0,用于摇杆
Sensitivity灵敏度,对于键盘输入,该值越大则响应时间越快,该值越小越平滑。对于鼠标输入,设置该值会对鼠标的实际移动距离按比例缩放
Snap如果该值为true,当轴收到负按键的输入信号时,轴的数值会立即置为0,仅用于键/鼠标输入
Invert如果该值为true,正按键会发送负值,负按键会发送正值
Type输入轴的类型,按键对应Key/Mouse类型,鼠标移动和滚轮滑动对应Mouse Movement类型,摇杆设置为Joystick Axis,窗口移动消息设置为WIndow Movement
Axis要映射的设备输入轴(摇杆、鼠标、手柄等)
Joy Num设置使用哪个摇杆作为消息输入,认接受所有摇杆的输入,仅用于输入轴和非按键输入

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐