Unity3d-输入-Input

原创 2015年11月18日 15:04:42

Unity3d的所有输入,包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 –Input类。
见API:http://docs.unity3d.com/ScriptReference/Input.html

输入Input类使用:建议在Updata()方法内使用。官方文档如是说:
–Note also that the Input flags are not reset until “Update()”, so its suggested you make all the Input Calls in the Update Loop.

鼠标输入

获得相应的鼠标位置:Input的静态变量
点击鼠标:鼠标左键为0,右键为1,滚轮为2.

Input.mousePosition
Input.GetMouseButton(0)//按下状态瞬间为true
Input.GetMouseButtonDown(0)//按下瞬间为true
Input.GetMouseButtonUp(1)//弹起瞬间为true

触摸输入

主要有以下变量与方法

Input.multiTouchEnabled
Input.simulateMouseWithTouches
Input.touchCount
Input.touches
Input.touchSupported
Input.GetTouch()

输入管理

输入管理–InputManager
通过菜单Edit–>Project Settings–>Input可打开InputManager。
InputManager InputManager的Axes项
在代码里可以如下使用InputManager

var input = Input.GetButton ("Horizontal");//按下为true,否则为false,建议使用GetButton()代替GetKey()
var input = Input.GetAxis ("Horizontal");//取得-1到1的值,无输入则为0

键盘输入

主要有以下方法

Input.GetAxis() //返回float值而不是布尔值,从-1到1之间
Input.GetAxisRaw()//返回非区间,而是端点值(-1,0,1)或者摇杆的位置
Input.GetButton() //按下状态瞬间为true
Input.GetButtonDown()//按下瞬间为true
Input.GetButtonUp()//弹起瞬间为true
Input.GetKey()//点击返回true,其他情况返回false

getKey()方法

在方法内输入Key值即可

    void Update() {
        if (Input.GetKey("up"))//直接输入Key值
            print("up arrow key is held down");
        if (Input.GetKey(KeyCode.UpArrow))//通过KeyCode类输入Key值
            print("KeyCode.UpArrow key is held down");
    }

其中有效的Key值如下:
普通键“a”, “b”, “c” …
数字键“1”, “2”, “3”, …
方向键“up”, “down”, “left”, “right”
小键盘“[1]”, “[2]”, “[3]”, “[+]”, “[equals]”
特殊键“backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down”
复键“right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd”
鼠标“mouse 0”, “mouse 1”, “mouse 2”, …
摇杆“joystick button 0”, “joystick button 1”, “joystick button 2”, …
摇杆“joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, …
方法键“f1”, “f2”, “f3”, …
见API:http://docs.unity3d.com/Manual/ConventionalGameInput.html

getButton()方法

该方法不是直接与Key值对应,而是与输入管理类的Axes项对应。
建议使用GetButton()代替GetKey(),项目后期更方便修改。

    void Update() {
        if (Input.GetButton("Fire1") && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
            GameObject clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;
        }
    }

GetAxis()方法

返回float值而不是布尔值,从-1到1之间
输入管理类InputManager专门为Axis设置了参数
InputManager的Axes项
Dead: 表示最小作用区域,当触摸或者摇杆小于这个值则认为没有输入
Gravity:表示松开按键时,从端点(1或者-1)返回缺省值(0)的速度
Sensitivity:表示按下按键时,从缺省值(0)行驶到端点(1或者-1)的速度
Snap: 闪电反向的作用
不勾选:-1逐渐变到0再逐渐变到1;
勾选上:-1立刻变为0再逐渐变到1。

MonoBehavior的鼠标事件

类似Start()和Update()方法一样,以下鼠标方法在MonoBehavior子类可以直接使用。
以下方法要求组件的Collider必须打开,否则都将检测不到鼠标。

void OnMouseEnter(){}//鼠标进入区域
void OnMouseOver(){}//鼠标停留在区域内
void OnMouseExit(){}//鼠标离开区域
void OnMouseDown(){}//鼠标按下
void OnMouseUp(){}  //鼠标松开
void OnMouseDrag(){}//鼠标拖拽
void OnMouseUpAsButton(){}
版权声明:本文为博主原创文章,未经博主允许不得转载。

unity3d学习笔记1——输入控制Input

先看看unity3d中输入的东西,在编辑中可以看到
  • wuhonghui455
  • wuhonghui455
  • 2014年09月28日 15:14
  • 1988

01_Unity3D的输入(Input)——键盘和鼠标

Unity3D使用input类控制用户的输入,输入包括了用户键盘,鼠标,触摸,重力感应以及地理位置输入等输入方式。      本节我们介绍Unity3D中如何监听用户的鼠标、键盘输入。      ...
  • li460998973
  • li460998973
  • 2014年11月24日 20:39
  • 9486

【unity插件】unity手柄插件Input输入管理插件,兼容各种主流手柄

unity开发主机游戏的时候,各个手柄的键位是不一样的,导致开发的时候特别不方便,需要对各个平台进行代码兼容,后来找到了一个特别好用的手柄插件,名字叫InControl。 下载地址: Unit...
  • egostudio
  • egostudio
  • 2016年05月19日 14:30
  • 4640

Unity3d EZGUI 輸入事件 Using Input delegates

  • 2017年09月22日 09:41
  • 2KB
  • 下载

03_Unity3D的输入(Input)——移动设备重力感应

移动设备游戏中经常会遇到重力感应的开发,Unity简化了重力感应的开发, 通过访问Input.acceleration属性,取回加速度传感器的值。首先我们看一下重力传感器的方向问题。Unity3D中...
  • li460998973
  • li460998973
  • 2014年11月24日 21:00
  • 7973

04_Unity3D的输入(Input)——移动设备方向

Input也可以获取当前移动设备的方向,不过只能获取不能使用Input修改,因为Input.deviceOrientation  属性为只读的。Unity在DeviceOrientation枚举中定义...
  • li460998973
  • li460998973
  • 2014年11月24日 21:07
  • 1325

[Unity3D]控制输入系统 - Input 类实例讲解

做游戏少不了控制,但是一个成熟的游戏引擎,是不能简单仅仅获取键盘中或者遥感确定的按键来控制,要考虑到用户更改游戏按键的情况,当然也得考虑到不同设备的不通输入方式,比如U3D是可以运行在iphone上的...
  • Ralfkaka
  • Ralfkaka
  • 2013年08月26日 11:30
  • 1467

unity3d input输入

Input 输入   按键 Input.GetKey(“up”) = Input.GetKey(KeyCode.UpArrow) 按住键盘上键 Input.GetKeyDown (“up”) 按下键盘...
  • wolf96
  • wolf96
  • 2014年07月26日 11:48
  • 1287

unity3d学习笔记1——输入控制Input

在基本认识了unity相关东西后,深入了解下它的输入是非常有必要的,包括鼠标,键盘,移动设备触摸等交互。 unity3d中输入由一个InputManager管理,在编辑器中有一个InputMan...
  • qq_35135955
  • qq_35135955
  • 2016年06月28日 22:24
  • 1648

Unity3D组件之 Input输入控制器教程

这篇说的是Unity Input。输入控制器 关于Unity3D是什么。我就不多做解释了。由于工作原因,该系列原创教程不定期更新。每月必然有更新。谢谢各位 Unity Input---输入控制...
  • braveyoung123
  • braveyoung123
  • 2013年04月13日 15:21
  • 809
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3d-输入-Input
举报原因:
原因补充:

(最多只允许输入30个字)