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

作者:小紫苏xw 时间:2023-01-26 17:09:17 

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

Demo展示

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

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

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

创建摇杆点这里:

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

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

这两个物体控制摇杆,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");
   }
}

来源:https://www.cnblogs.com/littleperilla/p/15435638.html

标签:Unity,EasyTouch,插件
0
投稿

猜你喜欢

  • Java语言多线程终止中的守护线程实例

    2023-11-25 07:48:52
  • Java中异常处理之try和catch代码块的使用

    2021-11-21 13:30:23
  • MyBatis注解式开发映射语句详解

    2023-06-07 20:31:23
  • 一文带你学会Spring JDBC的使用

    2023-11-29 17:05:34
  • java安全编码指南之:Mutability可变性详解

    2023-11-11 06:30:24
  • MyBatis-Plus解决逻辑删除与唯一索引的问题

    2022-09-09 00:17:03
  • 解决RestTemplate 请求url中包含百分号 会被转义成25的问题

    2022-11-01 22:59:51
  • Maven Plugin的@Mojo和@Execute的具体使用

    2021-12-19 05:23:17
  • JavaWeb简单文件上传流程的实战记录

    2023-04-02 09:14:59
  • 详解Java8如何使用Lambda表达式进行比较

    2023-12-09 19:27:16
  • IDEA远程管理docker镜像及容器服务的实现

    2022-01-07 16:26:48
  • java IO流 之 输出流 OutputString()的使用

    2023-08-11 23:16:30
  • android仿微信联系人索引列表功能

    2023-06-22 17:33:30
  • Java之JFrame输出Helloworld实例

    2022-01-19 16:40:52
  • Java基础之二叉搜索树的基本操作

    2023-07-08 10:07:07
  • 浅谈Java中的重载,重写,多态,静态绑定、动态绑定

    2023-10-10 02:40:05
  • java 微信随机红包算法代码实例

    2022-12-03 12:29:08
  • Maven学习----Maven安装与环境变量配置教程

    2021-12-04 08:20:25
  • 关于多线程常用方法以及对锁的控制(详解)

    2022-02-02 08:16:42
  • Java并发包之CopyOnWriteArrayList类的深入讲解

    2022-10-06 09:15:21
  • asp之家 软件编程 m.aspxhome.com