123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- using UnityEngine;
- using System.Collections;
- using System;
- using System.Collections.Generic;
- using UnityEngine.EventSystems;
- /// <summary>
- ///
- /// </summary>
- public class InputTouchContorler : MonoBehaviour
- {
- /////// <summary>
- /////// 玩家的邮件系统发生变化
- /////// </summary>
- ////public System.EventHandler OnChangeAnimationEvent;
- // Use this for initialization
- private void Start()
- {
- Input.multiTouchEnabled = true;
- }
- #region 点击更改动作/ 拖拽,移动显示位置/ 手指操作,缩放人物大小
- /// <summary>
- ///
- /// </summary>
- private float touchMoveDistance = 800.0f;
- //距离最值
- private float MaxCameraSize = 15;
- /// <summary>
- ///
- /// </summary>
- private float MinCameraSize = 5;
- /// <summary>
- ///
- /// </summary>
- private float DefaultCameraSize = 13;
- /// <summary>
- ///
- /// </summary>
- private ETouchState curTouch_NumOperateState = ETouchState.Null;
- /// <summary>
- ///
- /// </summary>
- private float CurCameraSize = 13;
- /// <summary>
- /// 缩放的进度值
- /// </summary>
- private float lastMulityTouch_MoveMagnitude = 0.0f;
- //当前手势
- private Vector2 lastMulityTouch_MoveDir;
- /////// <summary>
- /////// 上次单点触控的操作类型
- /////// </summary>
- ////private string lastSingleTouch_PhaseName = string.Empty;
- /// <summary>
- /// 上次单点触控的鼠标位置
- /// </summary>
- private Vector2 lastSingleTouch_Position = Vector2.zero;
- /// <summary>
- /// 上次触控操作的 手指数量
- /// </summary>
- private ETouchState lastTouch_NumOperateState = ETouchState.Null;
- /// <summary>
- /// 是否开启缩放操作监控
- /// </summary>
- public bool IsEnterScaleHeroOperate = false;
- /// <summary>
- /// 是否开启拖拽操作监控
- /// </summary>
- public bool IsEnterDragHeroOperate = false;
- /// <summary>
- ///
- /// </summary>
- private void Update()
- {
- if (!DragonBonesBGControler.Instance().CheckIsOpenTouchOperatehero())
- {
- return;
- }
-
- //多点触控
- if (Input.touchCount > 1)
- {
- ////lastSingleTouch_PhaseName = string.Empty;
- curTouch_NumOperateState = ETouchState.two;
- if (lastTouch_NumOperateState != curTouch_NumOperateState)
- {
- lastTouch_NumOperateState = curTouch_NumOperateState;
- }
- //停止拖拽 移动位置操作
- IsEnterScaleHeroOperate = true;
- ////两只手指都处于移动状态
- if (Input.touches[0].phase == TouchPhase.Moved || Input.touches[1].phase == TouchPhase.Moved)
- {
- ////计算移动方向
- Vector2 mDir = Input.touches[1].position - Input.touches[0].position;
- if (lastMulityTouch_MoveMagnitude < 0.1f)
- {
- lastMulityTouch_MoveMagnitude = mDir.magnitude;
- return;
- }
- float temp = 5.0f * (Mathf.Abs(lastMulityTouch_MoveMagnitude - mDir.magnitude) / touchMoveDistance);
- ////LogHelper.LogError("qqwang!!!! CurCameraSize::" + CurCameraSize + " touchDis::" + mDir.magnitude + "lastDis::" + lastMulityTouch_MoveMagnitude + "/// chazhi::" + temp);
- ////根据向量的大小判断当前手势是放大还是缩小
- if (mDir.sqrMagnitude > lastMulityTouch_MoveDir.sqrMagnitude)
- {
- ////CurCameraSize -= speed;
- CurCameraSize -= temp;
- }
- else
- {
- ////CurCameraSize += speed;
- CurCameraSize += temp;
- }
- ////更新当前手势
- lastMulityTouch_MoveDir = mDir;
- lastMulityTouch_MoveMagnitude = mDir.magnitude;
- ////限制距离
- CurCameraSize = Mathf.Clamp(CurCameraSize, MinCameraSize, MaxCameraSize);
- }
- }
- else if (Input.touchCount == 1)
- {
- lastMulityTouch_MoveDir = Vector2.zero;
- lastMulityTouch_MoveMagnitude = 0;
- IsEnterScaleHeroOperate = false;
- curTouch_NumOperateState = ETouchState.single;
- if (lastTouch_NumOperateState == ETouchState.two)
- {
- lastSingleTouch_Position = Input.touches[0].position;
- lastTouch_NumOperateState = ETouchState.single;
- return;
- }
- else
- {
- if (lastTouch_NumOperateState != curTouch_NumOperateState)
- {
- lastTouch_NumOperateState = curTouch_NumOperateState;
- }
- }
- switch (Input.GetTouch(0).phase)
- {
- case TouchPhase.Began:
- lastSingleTouch_Position = Input.touches[0].position;
- ////lastSingleTouch_PhaseName = Input.GetTouch(0).phase.ToString();
- break;
- case TouchPhase.Moved:
- case TouchPhase.Stationary:
- Vector2 delta = Input.touches[0].position - lastSingleTouch_Position;
- if (delta.sqrMagnitude > 0)
- {
- IsEnterDragHeroOperate = true;
- ////lastSingleTouch_PhaseName = Input.GetTouch(0).phase.ToString();
- ////当前手势 是 拖拽操作
- ////LogHelper.LogError("qqwang!!!! Input.touchCount==1 》》》Pos:" + Input.touches[0].position + ">>> delta::" + delta.ToString());
- lastSingleTouch_Position = Input.touches[0].position;
- ////更改拖拽的位置
- DragonBonesBGControler.Instance().OnChangeModelPosition(delta);
- }
- break;
- case TouchPhase.Ended:
- case TouchPhase.Canceled:
- IsEnterDragHeroOperate = false;
- ////if (lastSingleTouch_PhaseName == TouchPhase.Began.ToString())
- ////{
- ////if (OnChangeAnimationEvent != null)
- ////{
- //// OnChangeAnimationEvent.Invoke(null, EventArgs.Empty);
- ////}
- ////}
- break;
- }
- }
- else
- {
- lastMulityTouch_MoveMagnitude = 0;
- lastMulityTouch_MoveDir = Vector2.zero;
- lastSingleTouch_Position = Vector2.zero;
- ////lastSingleTouch_PhaseName = string.Empty;
- lastTouch_NumOperateState = ETouchState.Null;
- IsEnterDragHeroOperate = false;
- IsEnterScaleHeroOperate = false;
- }
- if (IsEnterScaleHeroOperate)
- {
- ////计算相机的角度和位置
- //通知去更改相机的scale
- DragonBonesBGControler.Instance().OnChangeCameraSize(CurCameraSize);
- }
- }
- #endregion
- public void Reset()
- {
- lastMulityTouch_MoveMagnitude = 0;
- lastMulityTouch_MoveDir = Vector2.zero;
- lastSingleTouch_Position = Vector2.zero;
- ////lastSingleTouch_PhaseName = string.Empty;
- lastTouch_NumOperateState = ETouchState.Null;
- IsEnterScaleHeroOperate = false;
- IsEnterDragHeroOperate = false;
- CurCameraSize = DefaultCameraSize;
- }
- }
- public class ControlerWindowdData
- {
- public string windowName;
- public bool controle;
- }
- public enum ETouchState
- {
- single,
- two,
- Null
- }
|