1.从虚拟轴上获得的数值默认为0,左右两个按键(-1和1)
2.虚拟轴起到的是中间兼容功能,可以使得我们的游戏操作设置在不同的平台上都能够使用
一根虚拟轴常常用来控制这一个轴向上的移动等等
一般虚拟轴的使用分为以下两步:
1.将控制方向的键与虚拟轴进行绑定 --- 比如按下A的时候,我们绑定-1,按下D的时候我们绑定1。
2.绑定好后我们通过获取虚拟轴的值来进行if编程,当为虚拟轴的值小于0的时候向左移动,当为虚拟轴的值大于1的时候向右移动
3.由于我们的按键和虚拟轴进行了绑定,当啥也不按的时候虚拟轴的值为0,按下A键虚拟轴向-1过度,此时值小于0,按下D键虚拟轴向1过度,此时值大于0
小于0的时候左移,大于0的时候右移
4.之所以用虚拟轴是因为我们可以将移动等等操作面向虚拟轴编程,然后虚拟轴可以面向不同的按键编程,这样去到不同的平台我们只需要修改虚拟轴面向的按键就可以了,不需要到实现移动等操作功能的代码
1.在Edit.projectSetting.Input Manager中我们可以点开一个叫axes的选项
这个axes中就有Unity内置的所有虚拟轴和虚拟按键
什么是虚拟按键? --- 你可以把它理解为半虚拟轴,他只有0/1或者是0/-1两个选项
我们用的最多的是开头的两个虚拟轴:Horizontal(adj.水平的),Vertical(adj.垂直的)-- 分别对应x,y轴
随便对开一个轴线,来到上面这张图中的选项:
开头两个Button分别是绑定-1和+1的按键
然后底下两个Button则是上面两个按键的替补按键 a和d
这三个分别是虚拟轴的重力,死区和灵敏度,至于这三个有啥作用可以把鼠标停在上面自己查看
虚拟轴的使用依然是在Updata方法中,这是因为虚拟轴是面向按键编程的,它依然要随时准备获取用户的按键输入,这就需要每帧都对输入缓存区进行扫描,确保一定能获取用户的按键输入
1.虚拟轴的本质是一个float型的数字,所以获取虚拟轴后我们需要用一个float变量来承接这个虚拟轴:调用Input类中的GetAxis方法来获取虚拟轴,括号内填写的参数是字符串类型的我们要获取的虚拟轴的名称
2.注意在Unity中的虚拟轴都有默认绑定按键
Horizontal的默认绑定按键:-1 -- 按键a , 1 -- 按键d
Virtual : -1 --- 按键s , 1 --- 按键w
有默认绑定按键的话,虚拟轴的值就会在按下按键的时候,向按键对应的值过渡
除了虚拟轴以外,还有虚拟按键,Unity中虚拟按键也是有默认绑定的,比如Jump虚拟按键的默认绑定按键是键盘中的空格
直接通过Input中的GetButton方法,并向方法的括号中传入虚拟按键的按键名(在Input Manager中有)我们就能够对当前虚拟按键的状态做判断
由于虚拟按键分为三个状态 --- 按下的那一刻,按下事,按键抬起时,所以我们也需要三个方法来判断这个三个状态的值 -- down , 按下时 ,up --- 如果处于对应的状态就返回ture,否则返回false