[Unity]开发pc端中常用到的上下左右操作控制源码

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;
     }
 
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值