学习笔记适合新手,如有错误请指正。?号处也请各位指点下,谢谢。
键盘鼠标输入检测十分局限,一般仅用于计算机等设备,下面介绍另一种方法
自定义输入可以设置输入类型名称、输入设备类型、输入键位等参数,从而方便地解决了计算机与家用机的输入兼容
点击导航菜单栏》Edit》Project Settings》Input打开输入设置界面
unity提供了默认的输入设置包括:
Horizontal横向移动
Vertical纵向移动
Firel开火按钮等输入
Name:名字
Descriptive Name:控制设置中显示的正值名称
Descriptive Negative Name:控制设置中显示的负值名称
Negative Button:该按钮用于负方向移动轴
Positive Button:该按钮用于正方向移动轴
Alt Negative Button:备选按钮用于负方向移动轴
Alt Positive Button:备选按钮用于真方向移动轴
Gravity:当没哟u相关按钮按下时,回归0的速度,单位/秒
Dead:模拟的死区大小,设定范围所有模拟设备的值为0
Sensitivity:灵敏度,单位/秒,仅用于数码设备
Snap:如果启用,当按下相反方向的按钮,该轴值将重设为0
Invert:如果请用,负按钮将提供正值,反之亦然
Type:控制轴的输入设备类型
Axis:连接设备的轴将控制这个轴
Joy Num:连接操纵杆将控制这个轴
可以发现很多键如Horizontal都出现了重复,这是因为所有键位键盘鼠标是单独的一套键,而手柄则是另一套,例如:Firel开火键1分为键盘鼠标版和手机版
1按钮
键盘鼠标:键盘鼠标实现按钮非常简单
1设置类型:首先将Type设置为Key or Mouse Button
2填写名字:这里Name填的是Firel
3设置键位:因为是单一按钮,所以仅仅需要填写正向部分,Positive Button填left ctrl,Alt Positive Button填0,也就是键盘左侧的Control键或者鼠标左键都对应开火箭
手柄:步骤和键盘鼠标完全一样,只是键盘名称不一样而已,这里Positive Button填写的是joystick button 0
脚本:当在Input Manager界面中设置好键位后,我们可以通过脚本监测输入,如代码:
using UnityEngine; using System.Collections; public class C_3_8_2_1 : MonoBehaviour { void Update() { //按下Fire1键 if(Input.GetButtonDown("Fire1")) { //... } //按住Fire1键 if(Input.GetButton("Fire1")) { //... } //松开Fire1键 if(Input.GetButtonUp("Fire1")) { //... } } }
2方向轴
方向轴常用与控制玩家角色的左右移动或上下移动
他的设置页面和按钮是完全一样的,但用法却不一样,方向轴有两个按钮分别对应正负两个方向,
以Horizontal方向轴为例,如下图,按下键盘右箭头是正值,喊下键盘左键头是负值,输出的范围是【-1,1】的浮点数,我们可以用它来控制角色的左右移动
键盘鼠标:前几步和按钮一样,只是需要额外设置gravity、Dead、Sensitivity、Snap等参数
Gravity填写3表示当松开对应按钮后,输出值会以3/秒的速度迅速归零
Dead填写0.001表示当输出在[-0.001,0.001]之间时会被忽略不计,强制输出0
Sensitivity填写3表示当按钮对应按钮后,输出值会以3/秒的速度变化,当按下的是正向按钮时会迅速到达1,当按下的是负向按钮时会迅速到达-1
手柄:这里不再是手柄的按钮而是手柄轴
1设置类型:首先将Type设置为Joystick Axis
2填写名字:这里Name天地是Horizontal
3设置手柄:Joy Num栏如果填Get Motion from all Joysticks表示对应所有手柄,也可以填写Joystick 1等手柄序号
4设置轴:Axis栏这里填的是X axis,也就是手柄十字键的横向
脚本:脚本获得轴的代码非常简单
using UnityEngine; using System.Collections; public class C_3_8_2_2 : MonoBehaviour { void Update () { //得到Horizontal轴的值 float axisH = Input.GetAxis("Horizontal"); } }