Unity 获取键盘鼠标信号输入

2022年5月5日 4392点热度 6人点赞 0条评论

前言

Unity 提供了 Input 类作为获取用户输入的一个工具,它可以直接获取键鼠以及一些移动设备的输入信号,包括陀螺仪、加速度传感器之类的,当然触摸信号也是支持的。

还有一种方式是通过虚拟标识来获取信号,可以由开发者将虚拟标识映射到输入涉设备上。

注意:本文只记录关于键鼠信号的输入

Input

Input类提供了一些函数来获取按钮的状态:

GetAccelerationEvent 返回上一帧期间进行的特定加速度测量。(不分配临时变量)。
GetAxis 返回由 axisName 标识的虚拟轴的值。
GetAxisRaw 返回由 axisName 标识的虚拟轴的值(未应用平滑过滤)。
GetButton 当按住 buttonName 标识的虚拟按钮时,返回 true。
GetButtonDown 在用户按下由 buttonName 标识的虚拟按钮的帧期间返回 true。
GetButtonUp 在用户释放由 buttonName 标识的虚拟按钮的第一帧返回 true。
GetJoystickNames 获取与在输入管理器中配置的轴的索引对应的输入设备名称的列表。
GetKey 在用户按下 name 标识的键时返回 true。
GetKeyDown 在用户开始按下 name 标识的键的帧期间返回 true。
GetKeyUp 在用户释放 name 标识的键的帧期间返回 true。
GetMouseButton 返回是否按下了给定的鼠标按钮。
GetMouseButtonDown 在用户按下给定鼠标按钮的帧期间返回 true。
GetMouseButtonUp 在用户释放给定鼠标按钮的帧期间返回 true。
GetTouch 调用 Input.GetTouch 以获取 Touch 结构。
IsJoystickPreconfigured 确定 Unity 是否已预先配置某个特定的游戏杆模型。(仅限 Linux)。
ResetInputAxes 重置所有输入。调用 ResetInputAxes 后,所有轴和所有按钮都恢复为 0,并且持续一帧时长。

除了通过表示获取虚拟轴或者虚拟按钮的函数,其他的函数都是通过实际按键类型来获取信号输入的。

获取按键信号

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKey("up"))
        {
            print("up arrow key is held down");
        }

        if (Input.GetKey("down"))
        {
            print("down arrow key is held down");
        }
    }
}

Input1

获取虚拟标识的信号

主要介绍两个函数的用法,其他函数的用法也是类似的。

public static float GetAxis (string axisName);
public static bool GetButton (string buttonName);

使用时都是传入虚拟标识的名称,只是返回值有一些区别。GetButton()返回按钮是否被按下,GetAxis() 返回一个float值,范围是[-1.0,1.0],如果值为0,说明这个遥感或者是输入设备没有被触发。

使用起来和直接获取按键状态没有太大的区别,但是它有一个优势,一个虚拟标识可以映射到多个按键上,比如在控制角色移动这件事上。可以将上下左右分别映射到键盘上的上下左右按键,同时还可以映射到wasd上,很方便。

修改虚表标识的按键映射

不过目前有个很头疼的问题,我没有找到在代码里修改虚拟标识映射到按键上的方法,只能在编辑器里操作。

在Unity的菜单栏选择 Edit->Project setting->Input Manager

捕获

属性如下:

Name:【按键名】该键的名称,可以在脚本编程中直接引用他。

Descriptive Name:【描述名】在游戏的独立机构中的配置对话框中,当控制值为正时候所显示的名称。默认空白。

Negative Descriptive Name:【负描述】在游戏的独立机构中的配置对话框中,当控制值为负的时候所显示的名称。

Nagative Button:【负向按钮】玩家按下这个按钮来让被控制物体向负方向运动。

Positive Button:【正向按钮】玩家按下这个按钮让被控制物体向正方向运动。

Alt Negative Button: 玩家可以使用的备选负向按钮,比如方向键和WASD

Alt Positive Button:玩家可以使用的备选争相按钮。

Gravity:【重力】如果玩家停止输入,该轴将恢复到空挡或0速度,其单位为单位每秒。

Dead:【盲区】可以用在模拟控制。在模拟控制器上,在这个范围内的任何值都会映射到空档不会提供任何输入。

Sensitivity:【灵敏度】可以用于数字控制,他是该轴向给定得值移动的速度。正负都可,单位为单位每秒。

Snap:【对齐】如果选中,可以确保在同时按下正向和负向按钮时候该轴的值为空挡。

Invert:【反转】迅速交换正向和负向控制键。

Type:【类型】该键对应的输入设备类型。可以为Key,MouseButton,MouseMove,JoystickAxis,或Window Movement。

Axis:【轴】这个控制方式有该输入设备的哪条轴指挥。这可受不同游戏手柄影响。

JoyNum:【操作杆编号】多个操作杆在机器上市后,决定哪个哪个操作杆控制给定的轴。可以选择从所有的操作杆接受输入,或是为其制定一个特定的。

按照这个来修改就行了。

大脸猫

这个人虽然很勤快,但什么也没有留下!

文章评论