Unity3d 触屏手机滑动事件(上下左右方向精确判断)
来源:互联网 发布:企业协同办公软件 编辑:程序博客网 时间:2024/06/04 18:36
private Vector2 st = Vector2.zero; //手指开始按下的位置 private Vector2 end = Vector2.zero; //手指拖动的位置 enum slideVector { nullVector,up,down, left, right }; //上下左右四个方向 private slideVector currentVector = slideVector.nullVector; //默认是null private float timer;//时间计数器 public float offsetTime = 0.01f;//判断的时间间隔 void OnGUI() { if (Event.current.type == EventType.MouseDown)//判断当前手指是按下事件 { st = Event.current.mousePosition;//记录开始按下的位置 } if (Event.current.type == EventType.MouseDrag)//判断当前手指是拖动事件 { timer += Time.deltaTime; //计时器 if (timer > offsetTime) { end = Event.current.mousePosition; //记录结束下的位置 Vector2 slideDirection = st - end; float x = slideDirection.x; float y = slideDirection.y; if (y < x && y > -x) { if (currentVector == slideVector.right) //判断当前方向 { return; } Debug.Log("right"); currentVector = slideVector.right; //设置方向 } else if (y > x && y < -x) { if (currentVector == slideVector.left) { return; } Debug.Log("left"); currentVector = slideVector.right; } else if (y > x && y > -x) { if (currentVector == slideVector.up) { return; } Debug.Log("up"); currentVector = slideVector.up; } else if (y < x && y < -x) { if (currentVector == slideVector.down) { return; } Debug.Log("down"); currentVector = slideVector.down; } timer = 0; st = end;//初始化位置 } } if (Event.current.type == EventType.MouseUp) { currentVector = slideVector.nullVector; //初始化方向 } }
2017-07-05 更新
添加了一个滑动距离 不然手指刚刚触碰上去就开始判断了滑动
我个人默认距离是80 滑动距离超过80的时候才开始执行方法
enum slideVector { nullVector, up, down, left, right }; private Vector2 touchFirst = Vector2.zero; //手指开始按下的位置 private Vector2 touchSecond = Vector2.zero; //手指拖动的位置 private slideVector currentVector = slideVector.nullVector;//当前滑动方向 private float timer;//时间计数器 public float offsetTime = 0.1f;//判断的时间间隔 public float SlidingDistance = 80f; void OnGUI() // 滑动方法02 { if (Event.current.type == EventType.MouseDown) //判断当前手指是按下事件 { touchFirst = Event.current.mousePosition;//记录开始按下的位置 } if (Event.current.type == EventType.MouseDrag) //判断当前手指是拖动事件 { touchSecond = Event.current.mousePosition; timer += Time.deltaTime; //计时器 if (timer > offsetTime) { touchSecond = Event.current.mousePosition; //记录结束下的位置 Vector2 slideDirection = touchFirst - touchSecond; float x = slideDirection.x; float y = slideDirection.y; if (y + SlidingDistance < x && y > -x - SlidingDistance) { if (currentVector == slideVector.left) { return; } Debug.Log("right"); currentVector = slideVector.left; } else if (y > x + SlidingDistance && y < -x - SlidingDistance) { if (currentVector == slideVector.right) { return; } Debug.Log("left"); currentVector = slideVector.right; } else if (y > x + SlidingDistance && y - SlidingDistance > -x) { if (currentVector == slideVector.up) { return; } Debug.Log("up"); currentVector = slideVector.up; } else if (y + SlidingDistance < x && y < -x - SlidingDistance) { if (currentVector == slideVector.down) { return; } Debug.Log("Down"); currentVector = slideVector.down; } timer = 0; touchFirst = touchSecond; } if (Event.current.type == EventType.MouseUp) {//滑动结束 currentVector = slideVector.nullVector; } } // 滑动方法 }
阅读全文
0 0
- Unity3d 触屏手机滑动事件(上下左右方向精确判断)
- UIPanGestureRecognizer上下左右滑动方向判断算法
- UIPanGestureRecognizer上下左右滑动方向判断算法
- UIPanGestureRecognizer上下左右滑动方向判断算法
- jQuery -- touch事件之滑动判断(左右上下方向)
- jQuery -- touch事件之滑动判断(左右上下方向)
- Appium 上下左右滑动事件
- GestureDetector和onTouchEvent判断手势方向(上下左右)
- android view 上下左右滑动 事件
- 对于移动端浏览器touch事件的研究总结(4)判断手指滑动方向
- 判断滑动方向UITableView
- 判断scrollviewd滑动方向
- touch滑动判断方向
- Unity3D制作触屏手机滑动动效果
- Unity3D制作触屏手机滑动动效果
- 【Unity 3D学习】获取鼠标滑动方向(上下左右)-控制摄像机围绕物体旋转
- Unity3d 滑动事件--向上、向下、向左、向右(PC好用但是手机滑动不是很理想)
- 判断手指上下左右的滑动距离
- Java高级特性之反射学习总结
- ASCII码排序(南阳理工OJ)
- js 分页列表组件
- Kotlin官方参考整理——06.Java互操作
- 【maven】创建简单的maven项目
- Unity3d 触屏手机滑动事件(上下左右方向精确判断)
- CF round 277 (div2) D题 树形dp
- ZCU102开发 (1) 运行基于ubuntu文件系统的Linux
- 【Java】Eclipse手动生成JavaWeb项目web.xml文件
- HTML初级1
- CentOS下tftp 安装配置使用
- 有限元分析中复合材料建模
- 协变与逆变
- [AHK]Get text from Excel 2007's status bar