最近在改之前的AR游戏Demo,想努力一下上个架,需要在非AR模式加入两指手势识别,因为本身游戏玩法的输入方式是一指滑动,所以设定两指同时滑动旋转模型,手势识别放大缩小。
看了一下网上普遍比较多的是单指滑动旋转模型,两指缩放。还有人说两指同时判断滑动旋转和缩放会有冲突且有抖动。其实我觉得是很好避免的。但是没有看到相关的内容,自己写了一下就发上来吧。
不是最好的办法,但是的确可以解决问题。
具体思路就是两指操作以两指距离做区分,两指距离比较近的情况视为滑动旋转,两指距离较远视为缩放。(以屏幕最宽边1/3长度为界)
具体代码见下。
if (uchCount > 1)//多指操作{Touch t1 = Input.GetTouch(0);Touch t2 = Input.GetTouch(1);//单点触控记录初始点if (t2.phase == TouchPhase.Began){startFingerPos = t2.position;}endFingerPos = t2.position;//实时手指位置 DoubleTouchCurrDis = Vector2.Distance(t1.position, t2.position);//实视两指距离if ((t1.phase == TouchPhase.Moved) && (t2.phase == TouchPhase.Moved)) //双指滑动{if(DoubleTouchCurrDis >= Screen.width / 3)//两指间距宽{if (OLDDoubleTouchCurrDis == 0){OLDDoubleTouchCurrDis = DoubleTouchCurrDis;}else{if (OLDDoubleTouchCurrDis - DoubleTouchCurrDis > 0)//放大{transform.Translate(Vector3.forward * -0.1f);OLDDoubleTouchCurrDis = DoubleTouchCurrDis;return;}else if (OLDDoubleTouchCurrDis - DoubleTouchCurrDis < 0)//缩小{transform.Translate(Vector3.forward * 0.1f);OLDDoubleTouchCurrDis = DoubleTouchCurrDis;return;}}}else//两指间距窄{if ((Mathf.Abs(endFingerPos.x - startFingerPos.x) / Screen.width) >= 0.05f){Debug.Log("向左右滑动");transform.ansform.position, Vector3.up, 10 * (endFingerPos.x - startFingerPos.x) / Screen.width);return;}if ((Mathf.Abs(endFingerPos.y - startFingerPos.y) / Screen.height) >= 0.05f){Debug.Log("向上下滑动");Debug.ientation);if (ientation == ScreenOrientation.LandscapeLeft)transform.ansform.position, transform.right, 10 * (endFingerPos.y - startFingerPos.y) / Screen.height);if (ientation == ScreenOrientation.LandscapeRight)transform.ansform.position, transform.right, -10 * (endFingerPos.y - startFingerPos.y) / Screen.height);return;}}}}
本文发布于:2024-02-02 11:00:31,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170684282843351.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |