Unity3D输入控制

鼠标键盘

鼠标键盘输入控制,Input类,要在Update()函数中检测

鼠标点击

0左键 1右键 2滚轮

按下鼠标左键:

Input.GetMouseButtonDown(0)

持续按下鼠标左键:

Input.GetMouseButton(0)

抬起鼠标左键:

Input.GetMouseButtonUp(0)

GetMouseButtonDown()和GetMouseButtonUp()成对出现

按钮键盘按键

KeyCode 枚举

按下键盘A键:

Input.GetKeyDown(KeyCode.A)

持续按下A键:

Input.GetKey(KeyCode.A)

抬起键盘按键:

Input.GetKeyUp(KeyCode.A)

GetKeyDown() 和 GetKeyUp()成对出现

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Update is called once per frame
void Update()
{
//鼠标点击
//按下鼠标 0左键 1右键 2滚轮
if (Input.GetMouseButtonDown(0))
{
Debug.Log("按下了鼠标左键");
}
//持续按下
if (Input.GetMouseButton(0))
{
Debug.Log("持续按下鼠标左键");
}
//抬起鼠标
if (Input.GetMouseButtonUp(0))
{
Debug.Log("抬起了鼠标左键");
}

//键盘
//按下键盘
if (Input.GetKeyDown(KeyCode.A))
{
Debug.Log("按下A键");
}
//持续按下A键
if (Input.GetKey(KeyCode.A))
{
Debug.Log("持续按下A键");
}
//抬起键盘按键
if (Input.GetKeyUp(KeyCode.A))
{
Debug.Log("松开抬起A键");
}
}

虚拟轴

虚拟轴是一个数值在[-1,1] 内的数轴,数轴上重要的数值就是-1,0,1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键,即将按键1设置为负轴按键,按键2设置为正轴按键。在没有按下任何按键的时候,虚拟轴的数值为0;按下按键1的时候,虚拟轴的数值会从0 ~ -1进行过渡;按下按键2的时候,虚拟轴数值会从0 ~ 1进行过渡。

设置虚拟轴

Edit => project setting => input。点击input会在unity右上角显示你要设置的新的输入轴所有的按键设置InputManager;可以添加自定义虚拟轴。虚拟轴只有一个按键时为虚拟按键。如 “Jump”

获取虚拟轴:

float horizontal = Input.GetAxis("Horizontal")

获取虚拟按键:

Input.GetButton("Jump")

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void Update()
{
//获取虚拟轴 如水平轴“Horizontal”
float horizontal = Input.GetAxis("Horizontal");
Debug.Log(horizontal + "");

//按下虚拟按键
if (Input.GetButtonDown("Jump"))
{
Debug.Log("按下虚拟按键 空格");
}
//持续按下虚拟按键
if (Input.GetButton("Jump"))
{
Debug.Log("持续按下虚拟按键");
}
//抬起虚拟按键
if (Input.GetButtonUp("Jump"))
{
Debug.Log("抬起虚拟按键");
}
}

触摸

单点触摸,多点触摸

开启多点触摸:

Input.multiTouchEnabled = true;

判断单点触摸:

Input.touchCount == 1;

判断多点触摸:

Input.touchCount == 2;

获取触摸对象:

Touch touch = Input.touches[0];

触摸阶段枚举:

TouchPhase

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void Start()
{
//开启多点触摸
Input.multiTouchEnabled = true;
}

// Update is called once per frame
void Update()
{
//判断单点触摸
if (Input.touchCount == 1)
{
//触摸对象
Touch touch = Input.touches[0];
//触摸位置
Debug.Log(touch.position);
//触摸阶段 TouchPhase 触摸阶段枚举
switch (touch.phase)
{
case TouchPhase.Began:
break;
case TouchPhase.Moved:
break;
case TouchPhase.Stationary:
break;
case TouchPhase.Ended:
break;
case TouchPhase.Canceled:
break;
default:
break;
}
}
//判断多点触摸
if (Input.touchCount == 2)
{
Touch touch = Input.touches[0];
Touch touch1 = Input.touches[1];
}
}