Unity输入与控制(摘要)

处理用户的shuru是游戏中必不可少的元素。Unity提供了一个非常强大易用的处理输入信息的类 —— Input,它可以处理鼠标、键盘、遥感/方向盘/手柄等游戏外设的输入信息,也可以处理 IOS/Android 等移动设备的触摸输入信息。Input Manager (输入管理器)用于为项目定义各种不同的输入轴和操作。开发人员可以通过编写脚本接收输入信息,完成与用户的交互。

Input Manager(输入管理器)

Input 类时处理输入的接口,下面包含成员变量和函数的简要介绍。
Input 类成员变量

成员变量 说明
acceleration 得到设备当前在三维空间中的线性加速度(只读)
accelerationEventCount 得到上一帧的加速度参数数据长度
accelerationEvents 得到上一帧的加速度数据列表(只读)(分配临时变量)
anyKey 是否有按键按下(只读)
anyKeyDown 当有任意按键按下的第一帧返回true(只读)
compass 罗盘属性(仅支持手持设备)(只读)
comenstateSensors 是否需要根据屏幕方向补偿感应器
compositionCursorPos 当前IME组合字符串的光标位置
compositionString 用户通过IME输入的组合字符串
deviceOrientation 操作系统提供的设备方向(只读)
gyro 返回默认的陀螺仪
imeCompositionMode 设置IME组合模式
imelsSelected 当前是否启用了IME输入键盘
inputString 得到当前帧的键盘输入字符串(只读)
mousePosition 鼠标位置的像素坐标(只读)
multiTouchEnabled 系统是否支持多点触摸
simulateMouseWithTouches 屏幕触控模拟鼠标的点击
touchCount 当前所有触摸状态列表长度(只读)
touches 当前所有触摸状态列表(只读)(分配临时变量)
touchSupported 返回应用程序正在运行的设备是否支持触摸输入

Input 类成员函数

成员函数 说明
GetAccelerationEvent 返回指定的上一帧加速度测量数据(不分配临时变量)
GetAxis 根据名称得到虚拟输入轴的值
GetAxisRaw 根据名称得到虚拟坐标轴的未使用平滑过滤的值
GetButton 如果指定名称的虚拟键被按下,那么期间持续返回 true
GetButtonDown 指定名称的虚拟按键被按下的那一帧返回 true
GetButtonUp 指定名称的虚拟按键被松开的那一帧返回 true
GetJoystickNames 返回当前连接的所有摇杆的名称数组
GetKey 当指定的按键被按下期间持续返回 true
GetKeyDown 当指定的按键被按下的那帧返回 true
GetKeyUp 当指定的按键被松开的那帧返回 true
GetMouseButton 指定的鼠标按键是否按下
GetMouseButtonDown 指定的鼠标俺家松开的那一帧返回 true
GetMouseButtonUp 指定的鼠标按键松开的那一帧返回 true
GetTouch 返回指定的触摸数据对象(不分配临时变量)
IsJoystickPreconfigured 配置默认的摇杆输出(只限Linux)
ResetInputAxes 重置所有输入,调用该方法后所有方向轴和按键的数值都变为 0

Key 和 Button 的区别:
  在Input类中,Key与物理按键对应,例如键盘、鼠标、摇杆上的按键,其映射关系无法改变,可以通过按键名称或者按键编码KeyCode来获取其输入状态。例如GetKeyDown(KeyCode.A)会在按下键盘 “A”键时返回true。
  而Button 是输入管理器 Input Manager 中定义的虚拟按键,通过名称来访问。开发者可以根据需要创建和命名虚拟按键,并设置与物理按键(及其组合)的消息映射。依次选择菜单栏中的 Edit -> Project Settings -> Input 命令,即可打开输入管理器。
  Key 不可改变,Button可以灵活的配置输入,并且可以让玩家来自定义键位输入,因此在开发中推荐使用虚拟按键。

输入轴Axis:
  输入轴Axis用来模拟平滑变化的输入,例如摇杆的变化、方向盘的转动等,需要在输入管理器中进行配置。它包含政府两个虚拟按键(Positive Button 和 Negative Button)。可以吧一个输入轴想象成一个滑动条,左边取值 -1,右边取值为 1。当按下按键时,数值会逐渐从 0 向一端变化,实现渐变的效果,而不会显得突兀。(例如汽车启动)

鼠标输入

(1)鼠标相应事件示例:

    void Update() {
        if(Input.GetMouseButton(0)) {//左键按下
            print("鼠标左键按下");
        }
        if(Input.GetMouseButtonDown(1)) {//右键按下
            print("鼠标右键按下");
        }
        if(Input.GetMouseButtonUp(2)) {//中键抬起
            print("鼠标中键抬起");
            print("鼠标当前位置:" + Input.mousePosition);
        }
    }

(2)鼠标控制物体旋转:

void Update() {
        float horizontalSpeed = 2.0f;
        float verticalSpeed = 2.0f;

        float h = horizontalSpeed * Input.GetAxis ("Mouse X");
        float v = verticalSpeed * Input.GetAxis ("Mouse Y");
        transform.Rotate (v, h, 0);
    }

你可能感兴趣的:(Unity输入与控制(摘要))