鼠标键盘
鼠标键盘输入控制,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];
}
}