Unity获取用户输入
基本概念
unity
中使用Input.GetAxis()
或Input.GetAxisRaw()
接口来获得用户输入,这两个接口的返回值取值范围为[-1,1],具有以下特性:
- 该值的含义取决于输入控制的类型,例如,对于游戏杆的水平轴,值为 1 表示游戏杆向右推到底,值为 -1 表示游戏杆向左推到底;值为 0 表示游戏杆处于中性位置。
- 对于鼠标:如果将轴映射到鼠标,该值会有所不同,并且不会在 -1...1 的范围内。此时,该值为当前鼠标增量乘以轴灵敏度。通常,正值表示鼠标向右/向下移动,负值表示鼠标向左/向上移动。
- 该值与帧率无关;使用该值时,您无需担心帧率变化问题。
区别
- GetAxis():unity进行了输入平滑处理,水平范围和垂直范围从 0 变为 +1 或 -1,以 0.05f 的步幅增加/减少。
- GetAxisRaw():对于键盘和游戏杆输入,该值将处于 -1...1 的范围内。 由于未对输入进行平滑处理,键盘输入将始终为 -1、0 或 1。 如果您想自己完成键盘输入的所有平滑处理,这非常有用。
输入
接口要求输入string
类型的axisName
,常见的取值如下所示
float x= Input.GetAxis("Horizontal");//对应键盘上的A键和D键 或←键和→键
float z = Input.GetAxis("Vertical"); //对应键盘上的W键和S键 或↑键和↓键
float h = Input.GetAxis("Mouse X"); //对应X方向上鼠标的移动,在移动设备上也可以这样
float v = Input.GetAxis("Mouse Y"); //对应Y方向上鼠标的移动,在移动设备上也可以这样
float m = Input.GetAxis("Fire1"); //对应鼠标左键或left+Ctrl
float n = Input.GetAxis("Fire2"); //对应鼠标右键或left+Alt
float k = Input.GetAxis("Fire3"); //对应鼠标中键或left+shift
要设置输入或查看axisName
** ** 的选项,请转到Edit >Project Settings ** >** Input Manager(“编辑”>“项目设置”>“输入管理器”) 。这将打开输入管理器。展开 Axis 以查看当前输入的列表。您可以将其中之一用作 axisName
.要重命名输入或更改正按钮等,请展开其中一个选项,然后更改“名称”字段或“正按钮”字段中的名称。此外,将“类型”更改为“操纵杆轴”。若要添加新输入,请将“大小”字段中的数字加 1。