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

 更新时间:2021年10月22日 08:23:10   作者:小紫苏xw  
这篇文章主要介绍了Unity EasyTouch摇杆插件使用,这套插件还支持双指缩放,滑动,手指画圈,点击,多指触碰,拖拽等,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下

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

Demo展示

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

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

创建摇杆点这里:

初始化

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

void OnEnable()
{    
    EasyJoystick.On_JoystickMove += OnJoystickMove;
}

private void OnDisable()
{
    EasyJoystick.On_JoystickMove -= OnJoystickMove;
}

private void OnDestroy()
{
    EasyJoystick.On_JoystickMove -= OnJoystickMove;
}

自定义On_JoystickMove

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

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

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

手势功能

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

具体api看注释:

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摇杆插件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • C#把写好的类编译成dll文件的操作方法

    C#把写好的类编译成dll文件的操作方法

    在C#中,DLL文件是一种可重用的代码库,它包含了已编译的函数、类、数据和资源,DLL文件可以被多个应用程序共享和重用,这样可以提高代码的复用性和可维护性,所以本文给大家介绍了C#如何把写好的类编译成dll文件,需要的朋友可以参考下
    2024-09-09
  • C#常见的几种集合 ArrayList,Hashtable,List<T>,Dictionary<K,V> 遍历方法对比

    C#常见的几种集合 ArrayList,Hashtable,List<T>,Dictionary<K,

    本文对C#中常见集合ArrayList,Hashtable,List<T>,Dictionary<K,V>遍历方法做了简单的对比和介绍,有需要的朋友可以参考一下。
    2016-03-03
  • C#可用于登录验证码的四位随机数生成方法

    C#可用于登录验证码的四位随机数生成方法

    这篇文章主要介绍了C#可用于登录验证码的四位随机数生成方法,提供了两种生成四位随机数的方法供大家参考,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • C#实现将javascript文件编译成dll文件的方法

    C#实现将javascript文件编译成dll文件的方法

    这篇文章主要介绍了C#实现将javascript文件编译成dll文件的方法,涉及C#编译生成dll动态链接库文件的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • c#发送请求访问外部接口的实例

    c#发送请求访问外部接口的实例

    这篇文章主要介绍了c#发送请求访问外部接口的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • C#七大经典排序算法系列(上)

    C#七大经典排序算法系列(上)

    这篇文章主要为大家详细介绍了C#七大经典排序算法系列上篇,冒泡排序,快速排序等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C#并行编程之PLINQ(并行LINQ)

    C#并行编程之PLINQ(并行LINQ)

    这篇文章介绍了C#并行编程之PLINQ(并行LINQ),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C# byte转为有符号整数实例

    C# byte转为有符号整数实例

    这篇文章主要介绍了C# byte转为有符号整数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • C#实现简易点餐功能

    C#实现简易点餐功能

    这篇文章主要为大家详细介绍了C#实现简易点餐功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C#多线程之Thread类详解

    C#多线程之Thread类详解

    这篇文章主要为大家详细介绍了C#多线程之Thread类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论