服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity EasyTouch摇杆插件使用示例详解

Unity EasyTouch摇杆插件使用示例详解

2022-12-07 11:35小紫苏xw C#

这篇文章主要介绍了Unity EasyTouch摇杆插件使用,这套插件还支持双指缩放,滑动,手指画圈,点击,多指触碰,拖拽等,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下

EasyTouch摇杆插件使用,先给大家展示下效果图:

Demo展示

Unity EasyTouch摇杆插件使用示例详解

双指缩放在电脑端无法掩饰,竖屏将就看看吧;

插件名叫EasyTouch,有需要给我留言,不想开仓库传了;

创建摇杆点这里:

Unity EasyTouch摇杆插件使用示例详解

初始化

On_JoystickMove这个回调是用来控制移动的;分两个方向,x和y轴;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void OnEnable()
{   
    EasyJoystick.On_JoystickMove += OnJoystickMove;
}
 
private void OnDisable()
{
    EasyJoystick.On_JoystickMove -= OnJoystickMove;
}
 
private void OnDestroy()
{
    EasyJoystick.On_JoystickMove -= OnJoystickMove;
}

自定义On_JoystickMove

我的摇杆物体名称叫做MoveControl;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void OnJoystickMove(MovingJoystick move)
{
    if (move.joystickName != "MoveControl")
    {
        return;
    }
 
    float PositionX = move.joystickAxis.x; //获取摇杆偏移摇杆中心的x坐标
    float PositionY = move.joystickAxis.y; //获取摇杆偏移摇杆中心的y坐标
 
    Vector2 value = move.joystickValue;
    if (PositionY != 0 || PositionX != 0)
    {
        //设置控制角色或物体方块的朝向(当前坐标+摇杆偏移量)
        //transform.LookAt(new Vector3(transform.position.x + PositionX, transform.position.y,transform.position.z + PositionY));
        //移动角色或物体的位置(按其所朝向的位置移动)
        Vector3 dir = new Vector3(PositionX, PositionY, 0);
        
        transform.Translate(dir * Time.deltaTime * speed);
    }
}

Unity EasyTouch摇杆插件使用示例详解

这两个物体控制摇杆,EasyTouch一定不能删除;

手势功能

这套插件还支持双指缩放,滑动,手指画圈,点击,多指触碰,拖拽等;

具体api看注释:

?
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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
public class Zoom : MonoBehaviour
{
    bool isStart = false;
    public Button BtnReset;
    public Button BtnLoadScene;
    public Text log;
    void OnEnable() { 
        EasyTouch.On_Swipe += On_Swipe; 
        EasyTouch.On_Drag += On_Drag; 
        EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers; 
        EasyTouch.On_PinchEnd += On_PinchEnd;
        EasyTouch.On_PinchIn += On_PinchIn;
        EasyTouch.On_PinchOut += On_PinchOut;
        BtnReset.onClick.AddListener(ResetScene); 
        BtnLoadScene.onClick.AddListener(OnLoadScene);
    
 
    void OnDisable() { 
        EasyTouch.On_Swipe -= On_Swipe; 
        EasyTouch.On_Drag -= On_Drag; 
        EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers; 
        EasyTouch.On_PinchEnd -= On_PinchEnd; 
        EasyTouch.On_PinchIn -= On_PinchIn;
        EasyTouch.On_PinchOut -= On_PinchOut;
        BtnReset.onClick.RemoveListener(ResetScene); 
    
 
    void OnDestroy() { 
        EasyTouch.On_Swipe -= On_Swipe; 
        EasyTouch.On_Drag -= On_Drag; 
        EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers; 
        EasyTouch.On_PinchEnd -= On_PinchEnd; 
        EasyTouch.On_PinchIn -= On_PinchIn;
        EasyTouch.On_PinchOut -= On_PinchOut;
        BtnReset.onClick.RemoveListener(ResetScene); 
    
 
    /// <summary> 
    /// 重置cube和相机 
    /// </summary> 
    void ResetScene() { 
        transform.position = Vector3.zero; 
        transform.rotation = Quaternion.Euler(Vector3.zero); 
        Camera.main.transform.position = new Vector3(0, 0, -10); 
    
 
    /// <summary> 
    /// 滑动使cube旋转 
    /// </summary> 
    /// <param name="ges"></param> 
    void On_Swipe(Gesture ges) { 
        Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0); 
        transform.Rotate(vec ,Space.World); 
        log.text = "滑动使cube旋转";
    
 
    /// <summary> 
    /// 拖拽移动cube 
    /// </summary> 
    /// <param name="ges"></param> 
    void On_Drag(Gesture ges) { 
        if (ges.pickObject == gameObject) { 
            transform.position = ges.GetTouchToWordlPoint(10);//相机z=-10 cube 0 
            log.text = "拖拽移动cube";
        
    
 
    /// <summary> 
    /// 双指滑动 平面移动相机 
    /// </summary> 
    /// <param name="ges"></param> 
    void On_Swipe2Fingers(Gesture ges)
    
        Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x*Time.deltaTime*25,
            -ges.deltaPosition.y*Time.deltaTime*25, 0)); 
        log.text = "双指滑动移动相机";
    }
 
    /// <summary> 
    /// 拉近拉远相机 
    /// </summary> 
    /// <param name="ges"></param> 
    private void On_PinchIn(Gesture gesture){
 
        if (gesture.pickObject == gameObject){
             
            float zoom = Time.deltaTime * gesture.deltaPinch;
            isStart = true;
            Vector3 scale = transform.localScale ;
            transform.localScale = new Vector3( scale.x - zoom, scale.y -zoom, scale.z-zoom);
        
    }
 
    private void On_PinchOut(Gesture gesture){
        if (gesture.pickObject == gameObject){
            float zoom = Time.deltaTime * gesture.deltaPinch;
            isStart = true;
            Vector3  scale = transform.localScale ;
            transform.localScale = new Vector3( scale.x + zoom, scale.y +zoom,scale.z+zoom);
 
        }
    }
    private void On_PinchEnd(Gesture gesture){
        if(isStart ){
            if (gesture.pickObject == gameObject){
                print ("End");
            }
        }
    
 
    void OnLoadScene()
    {
        SceneManager.LoadScene("TestJoyStick");
    }
}

到此这篇关于Unity EasyTouch摇杆插件使用的文章就介绍到这了,更多相关Unity EasyTouch摇杆插件内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/littleperilla/p/15435638.html

延伸 · 阅读

精彩推荐
  • C#C#线程处理系列之线程池中的I/O线程

    C#线程处理系列之线程池中的I/O线程

    这篇文章主要介绍了C#线程处理系列之线程池中的I/O线程,在这篇文章中将介绍如何用线程池中的I/O线程来执行I/O操作,感兴趣的小伙伴们可以参考一下...

    Learning hard10522021-11-17
  • C#C#实现读取匿名对象属性值的方法示例总结

    C#实现读取匿名对象属性值的方法示例总结

    这篇文章主要介绍了C#实现读取匿名对象属性值的方法,结合实例形式总结分析了C#通过反射、转换等方法读取匿名对象属性值的相关操作技巧,需要的朋友可...

    willingtolove10842022-08-29
  • C#Unity实现图片轮播组件

    Unity实现图片轮播组件

    这篇文章主要为大家详细介绍了Unity实现图片轮播组件的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    qq_2699950911962022-07-09
  • C#C#获取日期的星期名称实例代码

    C#获取日期的星期名称实例代码

    本文通过实例代码给大家介绍了基于c#获取日期的星期名称,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...

    _York7602022-02-28
  • C#C# DataGridView绑定数据源的方法

    C# DataGridView绑定数据源的方法

    这篇文章主要为大家详细介绍了C# DataGridView绑定数据源的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    五维思考6382022-03-01
  • C#C#简单实现文件上传功能

    C#简单实现文件上传功能

    这篇文章主要介绍了C#简单实现文件上传功能,利用MVC+EF+LigerUI 实现的upload上传功能,感兴趣的小伙伴们可以参考一下...

    C#教程网10492021-11-16
  • C#C# 两种方式反编译修改源码(dnspy,ildasm & ilasm)

    C# 两种方式反编译修改源码(dnspy,ildasm & ilasm)

    这篇文章主要介绍了C# 两种方式反编译修改源码(dnspy,ildasm & ilasm),帮助大家更好的理解和使用c#语言,感兴趣的朋友可以了解下...

    一线码农7362022-10-17
  • C#WPF TextBox实现按字节长度限制输入功能

    WPF TextBox实现按字节长度限制输入功能

    这篇文章主要为大家详细介绍了WPF TextBox实现按字节长度限制输入功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    衆尋8272022-01-25