EasyTouch摇杆插件使用

Demo展示

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

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

创建摇杆点这里:

初始化

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

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

自定义On_JoystickMove

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

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

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

手势功能

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

具体api看注释:

  1. public class Zoom : MonoBehaviour
  2. {
  3. bool isStart = false;
  4. public Button BtnReset;
  5. public Button BtnLoadScene;
  6. public Text log;
  7. void OnEnable() {
  8. EasyTouch.On_Swipe += On_Swipe;
  9. EasyTouch.On_Drag += On_Drag;
  10. EasyTouch.On_Swipe2Fingers += On_Swipe2Fingers;
  11. EasyTouch.On_PinchEnd += On_PinchEnd;
  12. EasyTouch.On_PinchIn += On_PinchIn;
  13. EasyTouch.On_PinchOut += On_PinchOut;
  14. BtnReset.onClick.AddListener(ResetScene);
  15. BtnLoadScene.onClick.AddListener(OnLoadScene);
  16. }
  17. void OnDisable() {
  18. EasyTouch.On_Swipe -= On_Swipe;
  19. EasyTouch.On_Drag -= On_Drag;
  20. EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
  21. EasyTouch.On_PinchEnd -= On_PinchEnd;
  22. EasyTouch.On_PinchIn -= On_PinchIn;
  23. EasyTouch.On_PinchOut -= On_PinchOut;
  24. BtnReset.onClick.RemoveListener(ResetScene);
  25. }
  26. void OnDestroy() {
  27. EasyTouch.On_Swipe -= On_Swipe;
  28. EasyTouch.On_Drag -= On_Drag;
  29. EasyTouch.On_Swipe2Fingers -= On_Swipe2Fingers;
  30. EasyTouch.On_PinchEnd -= On_PinchEnd;
  31. EasyTouch.On_PinchIn -= On_PinchIn;
  32. EasyTouch.On_PinchOut -= On_PinchOut;
  33. BtnReset.onClick.RemoveListener(ResetScene);
  34. }
  35. /// <summary>
  36. /// 重置cube和相机
  37. /// </summary>
  38. void ResetScene() {
  39. transform.position = Vector3.zero;
  40. transform.rotation = Quaternion.Euler(Vector3.zero);
  41. Camera.main.transform.position = new Vector3(0, 0, -10);
  42. }
  43. /// <summary>
  44. /// 滑动使cube旋转
  45. /// </summary>
  46. /// <param name="ges"></param>
  47. void On_Swipe(Gesture ges) {
  48. Vector3 vec = new Vector3(ges.deltaPosition.y, ges.deltaPosition.x, 0);
  49. transform.Rotate(vec ,Space.World);
  50. log.text = "滑动使cube旋转";
  51. }
  52. /// <summary>
  53. /// 拖拽移动cube
  54. /// </summary>
  55. /// <param name="ges"></param>
  56. void On_Drag(Gesture ges) {
  57. if (ges.pickObject == gameObject) {
  58. transform.position = ges.GetTouchToWordlPoint(10);//相机z=-10 cube 0
  59. log.text = "拖拽移动cube";
  60. }
  61. }
  62. /// <summary>
  63. /// 双指滑动 平面移动相机
  64. /// </summary>
  65. /// <param name="ges"></param>
  66. void On_Swipe2Fingers(Gesture ges)
  67. {
  68. Camera.main.transform.Translate(new Vector3(-ges.deltaPosition.x*Time.deltaTime*25,
  69. -ges.deltaPosition.y*Time.deltaTime*25, 0));
  70. log.text = "双指滑动移动相机";
  71. }
  72. /// <summary>
  73. /// 拉近拉远相机
  74. /// </summary>
  75. /// <param name="ges"></param>
  76. private void On_PinchIn(Gesture gesture){
  77. if (gesture.pickObject == gameObject){
  78. float zoom = Time.deltaTime * gesture.deltaPinch;
  79. isStart = true;
  80. Vector3 scale = transform.localScale ;
  81. transform.localScale = new Vector3( scale.x - zoom, scale.y -zoom, scale.z-zoom);
  82. }
  83. }
  84. private void On_PinchOut(Gesture gesture){
  85. if (gesture.pickObject == gameObject){
  86. float zoom = Time.deltaTime * gesture.deltaPinch;
  87. isStart = true;
  88. Vector3 scale = transform.localScale ;
  89. transform.localScale = new Vector3( scale.x + zoom, scale.y +zoom,scale.z+zoom);
  90. }
  91. }
  92. private void On_PinchEnd(Gesture gesture){
  93. if(isStart ){
  94. if (gesture.pickObject == gameObject){
  95. print ("End");
  96. }
  97. }
  98. }
  99. void OnLoadScene()
  100. {
  101. SceneManager.LoadScene("TestJoyStick");
  102. }
  103. }

Unity——EasyTouch摇杆插件使用的更多相关文章

  1. Unity时钟定时器插件

    Unity时钟定时器插件 http://dsqiu.iteye.com/blog/2020603https://github.com/joserocha3/KillerCircles/blob/67a ...

  2. Unity的NGUI插件篇——入场效果

    Unity的NGUI插件篇--入场效果 入场效果 入场效果须要借助于NGUI提供的TweenPosition类来完毕.为了说明此类的用法.本节将使会解说两个演示样例.本文选自  大学霸 <NGU ...

  3. 记录一个Unity播放器插件的开发

    背景 公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下: Unity视频插件调研 网上搜了搜,最流行的有以下两 ...

  4. Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件),可以兼容VRTK

    Curved UI - VR Ready Solution To Bend Warp Your Canvas 1.7,1.8,2.2,2.3 四种版本压缩包(Unity UGUI曲面插件) 可以兼容V ...

  5. Unity时钟定时器插件——Vision Timer源码分析之二

      Unity时钟定时器插件——Vision Timer源码分析之二 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 前面的已经介绍了vp_T ...

  6. Unity 小地图制作插件NJG MiniMap的简单使用

    unity版本:4.5.1 NJG MiniMap版本:1.5 参考链接:http://blog.csdn.net/wuming22222/article/details/37526659,作者:CS ...

  7. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  8. unity 编辑器和插件生产(四.2)

    上次 我们告诉编辑器制作,如何将图像加载到现场,如今 我们要告诉下.怎么样 制造UIButton以及UIimage交换. 阿土. 进入专题. 首先,我们要明白 unity机制.button属性等. 首 ...

  9. Unity 虚拟摇杆的实现

    一般地,虚拟摇杆是放在UI层的. 所以先在Canvas建立一个空对象(这里被命名成MoveController),再在空对象里面放一个作为摇杆图片的Image. 然后通过覆盖重写UnityEngine ...

随机推荐

  1. SQLServer数据库查询语法

    SQLServer数据库查询语法 前言: SQLServer数据库介绍: SQLServer数据库是微软公司推出的一款关系型数据库系统,SQL Server是一个可扩展的.高性能的.为分布式客户机/服 ...

  2. Docker私有镜像仓库Harbor

    一.安装Harbor(离线安装包的方式安装) 1.解压离线包 2.进入harbor目录中编辑harbor.yml 3.安装docker-compose yum -y install docker-co ...

  3. Docker下制作一个容器镜像

    操作过程描述: (1)先基于centos的镜像启动一个centos容器 (2)在这个容器中安装nginx (3)然后把这个已经安装了nginx的容器制作成一个docker的镜像 操作:docker c ...

  4. MacOS开启PPTP协议

    ​ 开启PPTP协议: Mac OS X 系统默认开启了完整性保护(System Intregrity Protection,SIP),所以即使是root帐户也无法修改系统目录中的文件.如果需要修改受 ...

  5. 富文本编辑器-SpringBoot

    目录 简介 Editor.md 基础工程搭建 数据库设计 基础项目搭建 文章编辑整合(重点) 图片上传问题 表情包问题 文章展示 简介 项目地址:https://gitee.com/zwtgit/ri ...

  6. 详解JDBC中的Class.forName(DriverName)

    在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法.通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态 ...

  7. 洛谷P1088——火星人(全排列+数学模拟)

    题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学 ...

  8. CodeForce-782B The Meeting Place Cannot Be Changed(高精度二分)

    https://vjudge.net/problem/CodeForces-782B B. The Meeting Place Cannot Be Changed time limit per tes ...

  9. DS博客作业04--图

    这个作业属于哪个班级 数据结构--网络2011/2012 这个作业的地址 DS博客作业04--图 这个作业的目标 学习图结构设计及相关算法 姓名 黄静 目录 0.PTA得分截图 1.本周学习总结 1. ...

  10. 目标检测之pycocotools安装

    从清华镜像源下载https://pypi.tuna.tsinghua.edu.cn/simple/pycocotools-windows/ wheel型包,pycocotools_windows-2. ...