unity3d-Input介绍

Input

命名空间属于 UnityEngine

描述

以下描述我参考了官网解释,如有不妥当之处,请及时指正

接口输入系统。使用此类来读取输入管理器中设置的轴,并访问移动设备上的多点触摸/加速度计数据。
Unity Input—输入控制管理器:Edit->Project Setting->input
unity3d-Input介绍_第1张图片

  1. 名称(Name):名称用于从脚本使用这个轴
    2. 描述名称(Descriptive Name):正值名称显示于配置对话框的输入标签,用于独立版。
    3. 描述负名称(Descriptive Negative Name):负值名称显示于配置对话框的输入标签,用于独立版。
    4. 负按钮(Negative Button):该按钮用于在负方向移动轴 (如:左)
    5. 正按钮(Positive Button):该按钮用于在正方向移动轴 (如:右)
    6. 备选负按钮(Alt Negative Button):备选按钮用于在负方向移动轴(如:a)
    7. 备选正按钮(Alt Positive Button):备选按钮用于在正方向移动轴 (如:d)
    8. 重力(Gravity):当没有按钮被按下,在单位每秒速度,轴下降到0。
    9. 死亡(Dead):模拟的死区大小。 设定范围内所有模拟设备的值为0。
    10. 灵敏度(Sensitivity):在单位每秒速度,轴将移向目标值。这近用于数码设备。
    11. 捕捉(Snap):如果启用,当按下相反方向的按钮,该轴值将重设为0。
    12. 反向(Invert):如果启用,负按钮将提供一个正值,反之亦然。
    13. 类型(Type):控制轴的输入设备类型
    14. 轴(Axis):连接设备的轴将控制这个轴 (因为上面正负按钮设置的是左右,所以这里要选X轴)
    15. 操作杆(Joy Num)连接操纵杆将控制这个轴

1.读取轴

在使用Input.GetAxis读取轴时,我们需要知道一些基本的知识:

  1. “Horizonta”(水平)和“Vertica”(垂直)映射到操纵杆,A,W,S,D和箭头键。按对应的键触发 ,属于传统的键盘操作类。
  2. “MouseX”和“Mouse Y”映射到鼠标三角形,可以在输入管理器中添加新的输入轴。 鼠标沿着屏幕X和Y轴移动时触发,属于触屏类。
  3. “Mouse ScrollWheel” 当鼠标滚动轮滚动时触发,属于触屏类。
  4. “Fire1”, “Fire2” “Fire3”映射于键盘的Ctrl、Alt、Cmd键和鼠标中键或控制器的按钮。新的输入设置可以使用输入管理器来添加。
  5. 如果你使用Input制作某种运动行为可以使用Input.GetAxis方法,它能够返回来自键盘、控制器或鼠标平缓并且可以设置的输入结果。使用Input.GetButton方法只用于像事件之类的动作。不要将它用于移动动作。Input.GetAxis方法可以使脚本代码更简洁。
public class ExampleClass : MonoBehaviour
{
    public GameObject projectile;
    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
            Instantiate(projectile, transform.position, transform.rotation);
    }
}
  1. public static float GetAxis(string axisName);返回由axisName标识的虚拟轴的值。对于键盘和操纵杆输入,该值的范围为-1 … 1。 如果轴设置为增量鼠标移动,则鼠标的增量乘以轴灵敏度,范围不为-1 … 1。
//键盘操作类
public class Player : MonoBehaviour {

    public float speed = 10;
    public float rotationSpeed = 100;
    // Update is called once per frame
    void Update () {
        //前正后负,范围根据移动速度可能超出[-1,1]。
         float translation = Input.GetAxis("Vertical") * speed;
         //上正下负范围根据移动速度可能超出[-1,1]。
         float rotation = Input.GetAxis("Horizontal") * rotationSpeed;
          translation *= Time.deltaTime;
          rotation *= Time.deltaTime;
          Debug.Log("translation:"+translation);
          Debug.Log("rotation:" + rotation);
          transform.Translate(0, 0, translation);
          transform.Rotate(0, rotation, 0);
    }
}
public class Player : MonoBehaviour {

    public float horizontalSpeed = 2;
    public float verticalSpeed = 2;
    // Update is called once per frame
    void Update () {
        float h = horizontalSpeed * Input.GetAxis("Mouse X");
        float v = verticalSpeed * Input.GetAxis("Mouse Y");
        Debug.Log("H" + h);
        Debug.Log("V" + v);
        transform.Rotate(v, h, 0); ;
    }
}
public class Player : MonoBehaviour {

    // Update is called once per frame
    void Update () {
        //向后 返回负值  向前滑动 返回正值
        float s = Input.GetAxis("Mouse ScrollWheel");

        Debug.Log(s);
    }
}

注意:每次输入在”Update()”之前不会再更新,所以建议你将所有的输入调用都写在Update方法中。

2.移动设备:

  1. iOS和Android设备能够支持多点触控。你可以通过Input.touches属性集合访问在最近一帧中触摸在屏幕上的每一根手指的状态数据。想详细了解的话,可以参考这个网址

  2. 当设备移动时,它们的加速感应器硬件将报告它们在三维空间中沿着三个主轴的线性加速变化数据。你可以使用这些数据检测设备当前的移动方向(相对于地面)和突然间的方向改 变。

  3. 硬件沿着某感应一轴加速就会立即返回重力值。如果值为1.0代表沿着给定轴的方向+1g的重力加速度,如果值为-1.0代表-1g的重力加速度。如果你保持设备垂直(主页键在下方)在你正前方,那么X轴就是指向你右侧的方向,Y轴指向正上方,Z轴就是你所面向的方向。

  4. 你可以读取Input.acceleration属性获得设备的加速度信息。你也可以使用Input.deviceOrientation属性获取设备在三维空间中的方位偏移。检测方位变化在你想要制作游戏行为中会非常有用,当用户转动设备或拿着设备时它是不同的。

  5. 注意:速度感应装置在每一帧中能够轮询多次,想访问上一帧的所有速度样本你可以读取Input.accelerationEvents属性集合。这在重组玩家动作中会非常有用。例如将加速数据放入一个预测器中或者实现其他一些精确的动作捕捉。

静态属性(Static Properties)

名称 描述
acceleration 最近一次测量的设备在三维空间中的线性加速度(只读)
accelerationEventCount 上一帧所进行的加速度测量次数。
accelerationEvents 返回上一帧测量的加速度数据列表(只读)(分配临时变量)
anyKey 是否有某一按键或鼠标按钮此时被按住?(只读)
anyKeyDown 在第一帧用户按下某一按键或鼠标按钮,返回true(只读)
backButtonLeavesApp 应该 返回按钮退出应用程序?仅适用于Android,Windows Phone或Windows平板电脑。
compass 访问指南针的属性(仅限手持设备)。(只读)
compensateSensors 该属性控制输入传感器是否应该补偿屏幕方向。补偿传感器是加速度计,罗盘,陀螺仪。
compositionCursorPos 当前文本输入位置,使用于IME来打开窗口。
compositionString 当前用户正在输入的IME组合字符串。
deviceOrientation 操作系统所报告的物理设备的方位信息(只读)
gyro 返回默认的陀螺仪。
imeCompositionMode 控制IME输入组合的启用和禁用。
imeIsSelected 用户是否选择了IME键盘输入源?如果用户键盘当前配置为IME输入,则返回true,否则返回false。由于亚洲语言的用户通常可以使用键击打开或关闭IME转换,所以提供启用IME的一些可视指示是有用的。这可以通过检查Input.imeIsSelected来完成。
inputString 返回此帧输入的键盘输入。(只读)
location 访问设备位置的属性(仅限手持设备)。(只读)
mousePosition 当前所在像素坐标的鼠标位置(只读)。
mousePresent 指示是否检测到鼠标设备。
mouseScrollDelta 当前鼠标滚动增量。(只读)
multiTouchEnabled 指示系统是否处理多个触摸的属性。
simulateMouseWithTouches 启用/禁用触摸鼠标模拟。默认情况下,此选项被启用。
stylusTouchSupported 当触控笔触摸由设备或平台支持时,返回true。
touchCount 触摸的数量。每一帧之内都一定不会改变(只读)
touches 返回代表上一帧所有的触摸状态的对象列表(只读)(分配临时变量)
touchPressureSupported 用户检查触摸压力是否支持的Bool值。
touchSupported 返回当前正在运行的应用程序的设备是否支持触摸输入。

静态方法(Static Methods)

名称 描述
GetAxis 根据坐标轴名称返回虚拟坐标系中的值。
GetAxisRaw 通过坐标轴名称返回一个不使用平滑滤波器的虚拟坐标值。
GetButton 根据按钮名称返回true当对应的虚拟按钮被按住时。
GetButtonDown 在给定名称的虚拟按钮被按下的那一帧返回true。
GetButtonUp 在用户释放指定名称的虚拟按钮时返回true。
GetKey 当通过名称指定的按键被用户按住时返回true。想想自动开火。
GetKeyDown 当用户按下指定名称的按键时的那一帧返回true。
GetKeyUp 在用户释放给定名字的按键的那一帧返回true。
GetMouseButton 当指定的鼠标按钮被按下时返回true
GetMouseButtonDown 在用户按下指定鼠标按键的那一帧返回true。
GetMouseButtonUp 在用户释放指定鼠标按键的那一帧返回true。
ResetInputAxes 在一帧中重置所有的输入,重置输入指令之后所有的方向轴都被设置为0并且所有的按键都被设置为0。
GetAccelerationEvent 返回上一帧发生的指定的加速度测量(不允许分配临时变量)

关于input的就先到介绍这里吧,我所写的这些,只是简单的把input基础介绍了一下,如果有想深入学习的同学,我建议去官网查看属性和方法,因为我觉得基础是很重要的,必须重视,而官网所说得一定是最权威的。

你可能感兴趣的:(unity3d)