unity --19 输入及虚拟轴

unity的输入可分为两大类:

传统输入

早期游戏开发时候,都选用这种模式,通过分别对鼠标或者键盘的按钮判断来执行:
①Input.GetMouseButton 系列: 判断鼠标,参数0是左键,参数1是右键

②Input.GetKey 系列: 判断键盘,参数可用keycode枚举

虚拟输入轴

为了解决不同控制设备之间的差异(键盘左右,或者摇杆左右操作逻辑相同),再加上玩家有自定义按键的需求,因此unity建议不使用第一种传统输入法(代码写死了),而是提供了虚拟按键,即虚拟输入轴。

这样脚本代码访问虚拟输入轴,而虚拟轴和真实的控制设备绑定,间接访问来达到统一兼容的目的。

在这里插入图片描述
虚拟输入还有一个好处: 现代游戏的输入和早期游戏不太一样,早期游戏中,上,下,左,右等都是离散的状态,可以直接用0,1,2等表示;而现代游戏输入往往具有中间状态,比如轻触按钮是“走”,连续按住不放是“加速跑”,它需要形如0.1,0.3,0.5,1等多级梯度。

使用unity的虚拟输入,哪怕是键盘也能模拟多级梯度,当我们按住“A”键时,这个键绑定的虚拟轴的值会逐渐从0增加到1。

①bool Input.GetButton(“虚拟轴名”):该系列可读取虚拟轴,而不用关心真实绑定的键来源于鼠标,或者键盘,或者其他控制设备。它仅判断有没有键被按下或者抬起,无法判断方向是左,还是右。

②float Input.GetAxis(“虚拟轴名”):即能判断有没有键被按下或者抬起,又能判断方向,返回值是一个-1到1之间的浮点数,值为0表示没有键被按下。[-1,0)表示有键被按下,方向左,(0,1]表示有键被按下,方向右。
Input.GetAxisRaw(“虚拟轴名”): 返回值是-1,0,1的离散值。

Gravity:输入复位的速度,仅用于类型为键/鼠标的按键。
•*Dead:任何小于该值的输入值(不论正负值)都会被视为0, 用于摇杆。
•Sensitivity:灵敏度,对于键盘输入,该值越大则响应时间 越快,该值越小则越平滑。对于鼠标输入,设置该值会对鼠 标的实际移动距离按比例缩放。
•Snap:如果启用该设置,当轴收到反向的输入信号时,轴 的数值会立即置为0,否则会缓慢的应用反向信号值。仅用 于键/鼠标输入。
•Invert:启用该参数可以让正向按钮发送负值,反向按钮发 送正值。

练习

让按键控制预制体(带刚体组件),轻按则在某个位置生成,长按则实现“弹射”效果。

using System.Collections;
using System.Collections.Generic
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值