Unity获取用户输入

发布时间 2023-12-24 20:02:13作者: biiigwang

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。

参考资料