Unity在PC端测试的时候对于输入上下左右时一般情况我们可以用下面代码来实现用WASD
键或者方向键控制上下左右操作

但是在移动端,并没有这些按键,那么该怎么实现这些简单的操作呢?的确有插件可以很简单的实现这些功能,但是我还是自己简单的
写了一段代码来实现
01
02
03
04
05
06
07
08
09
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
using
System.Collections;
using
System.Collections.Generic;
using
UnityEngine;
using
UnityEngine.EventSystems;
public
enum
TouchDir
{
Left, Right, Top, Bottom, None
}
public
class
NewBehaviourScript : MonoBehaviour
{
private
Vector3 pos;
void
Update () {
if
(GetTouchDir()== TouchDir.Left)
{
Debug.Log(
"左..."
);
}
if
(GetTouchDir() == TouchDir.Right)
{
Debug.Log(
"右..."
);
}
if
(GetTouchDir() == TouchDir.Top)
{
Debug.Log(
"上..."
);
}
if
(GetTouchDir() == TouchDir.Bottom)
{
Debug.Log(
"下..."
);
}
}
private
TouchDir GetTouchDir()
{
if
(Input.GetMouseButtonDown(0))
{
pos = Input.mousePosition;
}
if
(Input.GetMouseButtonUp(0) && !EventSystem.current.IsPointerOverGameObject())
//若抬起来时的点在UI(UGUI)上不触发
{
Vector3 touchOffset = Input.mousePosition - pos;
if
(Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && Mathf.Abs(touchOffset.x) > 50)
{
if
(touchOffset.x > 0)
{
return
TouchDir.Right;
}
}
if
(Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && Mathf.Abs(touchOffset.x) > 50)
{
if
(touchOffset.x < 0)
{
return
TouchDir.Left;
}
}
if
(Mathf.Abs(touchOffset.x) < Mathf.Abs(touchOffset.y) && Mathf.Abs(touchOffset.y) > 50)
{
if
(touchOffset.y < 0)
{
return
TouchDir.Bottom;
}
}
if
(Mathf.Abs(touchOffset.x) < Mathf.Abs(touchOffset.y) && Mathf.Abs(touchOffset.y) > 50)
{
if
(touchOffset.y > 0)
{
return
TouchDir.Top;
}
}
}
return
TouchDir.None;
}
}
|