当前位置: 首页 > article >正文

Unity 关于Input类的使用

Input类在我们游戏开发中需要获取外设设备(比如键盘、鼠标、游戏手柄等)进行交互时,基本都会用到。

它主要有以下一些常用的方法。

1、GetKey(KeyCode key),检测按键是否被按下;

2、GetKeyDown(KeyCode key),检测按键被按下的那一帧;

3、GetKeyUp(KeyCode key),检测按键被释放那一帧;

其中,第一个方法和后面方法是有一定区别的,GetKey方法,在按键被按下期间它会持续返回true,所以比较适合需持续响应按键输入的情况,比如角色的移动;而GetKeyDown和GetKeyUp方法只有在被按下或放开那一帧返回True,只响应一次,比较适合发射子弹或者跳跃这种。

对于KeyCode这个枚举参数,官方定义了很多。

但我们比较常用的是这些:

  • KeyCode.A, KeyCode.B, KeyCode.C, ... KeyCode.Z: 字母按键;
  • KeyCode.Alpha0, KeyCode.Alpha1, KeyCode.Alpha2, ... KeyCode.Alpha9: 数字键按键;
  • KeyCode.Space: 空格键。
  • KeyCode.Return: 回车键。
  • KeyCode.Escape: Esc键。
  • KeyCode.LeftShift, KeyCode.RightShift: Shift键。
  • KeyCode.LeftControl, KeyCode.RightControl: Control键。
  • KeyCode.LeftAlt, KeyCode.RightAlt: Alt键。
  • KeyCode.LeftArrow, KeyCode.RightArrow, KeyCode.UpArrow, KeyCode.DownArrow: 方向键。
  • KeyCode.F1, KeyCode.F2, KeyCode.F3, ... KeyCode.F12: 功能键。

4、 GetButton(string buttonName),检测指定虚拟按键是否被按下;

5、GetButtonDown(string buttonName),检测指定虚拟按键被按下的那一帧;

6、GetButtonUp(string buttonName),检测指定虚拟按键被释放那一帧;

上面三种方法是检测虚拟按键的方法,其中 GetButton也是细腻按键按下时,持续返回True,比较适合奔跑或射击,而GetButtonDown和GetButtonUp只有在按下或弹开那一帧返回True,GetButtonDown比较适合打开菜单,使用特殊技能这些,GetButtonUp比较适合停止奔跑,切换武器这些。

7、GetAxis(string axisName),获取指定虚拟轴的值;

8、GetAxisRaw(string axisName);获取指定虚拟轴的原始值,该方法返回的值只有-1、0、1三个可能的取值。

其中GetAxis和GetAxisRaw有区别的,GetAxi返回的数值是根据输入变化而返回平滑过渡的一系列数值。而GetAxisRaw根据取值范围,直接映射,返回-1、0、1,中间没有过渡。所以GetAxis比较适合平滑过渡的情况,如角色移动,相机旋转;而GetAxisRaw应用在更直接和灵敏的情况,比如跳跃,攻击。

设备虚拟键盘的映射可在Edit-Input Manager里面设置和查看。

除了上面的方法,还有一些跟鼠标相关的常见应用方法:

1、Input.mousePosition,取当前鼠标在屏幕上的位置,返回一个 Vector3 类型的坐标;

2、Input.GetMouseButtonDown(int button),检测鼠标按下那一帧;

3、Input.GetMouseButton(int button),检测鼠标按下;

4、Input.GetMouseButtonUp(int button),检测鼠标释放那一帧;

其中,参数 button 表示鼠标按钮的索引,0 表示左键,1 表示右键,2 表示中键。

5、Input.GetAxis("Mouse X"),Input.GetAxis("Mouse Y"),获取鼠标在水平和垂直方向上的移动距离,返回一个浮点数。

6、Input.GetAxis("Mouse ScrollWheel"),获取鼠标滚轮的滚动量,返回一个浮点数。


http://www.kler.cn/news/149844.html

相关文章:

  • 惠威M200MKII音箱拆机
  • 手摸手Element-ui组件化开发
  • 【C/C++】常见模拟题题解
  • React 和 Vue 在技术层面有哪些区别?
  • JSON.stringify,JSON.parse
  • Linux下文件操作函数
  • 【Linux】 sudo命令使用
  • 每日一题(LeetCode)----哈希表--两数之和
  • ArkUI开发进阶—@Builder函数@BuilderParam装饰器的妙用与场景应用【鸿蒙专栏-05】
  • el-table合并行
  • SecureCRT -- 使用说明
  • 【Apifox】测试工具自动编写接口文档
  • ubuntu系统进入休眠后cuda初始化报错
  • 【Redis基础】Redis基本的全局命令
  • 一文详解Python中常用数据类型
  • render函数举例
  • vue中下载文件后无法打开的坑
  • Linux 下命令行启动与关闭WebLogic的相关服务
  • PPP/INS紧组合代码学习
  • uniapp设置手机通知权限以及uniapp-push2.0推送
  • 【迅搜04】索引配置(一)加载配置文件以及服务端配置
  • SpringBoot : ch09 整合Redis
  • 解析javascript数组方法 find 和 filter 有何区别
  • Android 11.0 默认开启USB调试功能
  • 【C++】内存管理(new与delete)
  • android开发:安卓13Wifi和热点查看与设置功能
  • 【Java Spring】SpringBoot 五大类注解
  • 使用elasticsearch-head插件修改elasticsearch数据
  • [UGUI]Unity背包系统制作详细步骤
  • 【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统