我的Unity(14)一点一滴VR触屏放大缩小
2017-01-18 11:03
661 查看
1 使用VR时实现触屏放大和缩小物体
效果图
private Touch oldTouch1; //上次触摸点1(手指1) private Touch oldTouch2; //上次触摸点2(手指2) void RotateByTouch () { //没有触摸,就是触摸点为0 if (Input.touchCount <= 0) { return; } //单点触摸, 水平上下旋转 if (1 == Input.touchCount) { Touch touch = Input.GetTouch (0); Vector2 deltaPos = touch.deltaPosition; transform.Rotate (Vector3.down * deltaPos.x, Space.World);//绕Y轴进行旋转 transform.Rotate (Vector3.right * deltaPos.y, Space.World);//绕X轴进行旋转,下面我们还可以写绕Z轴进行旋转 } //多点触摸, 放大缩小 Touch newTouch1 = Input.GetTouch (0); Touch newTouch2 = Input.GetTouch (1); //第2点刚开始接触屏幕, 只记录,不做处理 if (newTouch2.phase == TouchPhase.Began) { oldTouch2 = newTouch2; oldTouch1 = newTouch1; return; } //计算老的两点距离和新的两点间距离,变大要放大模型,变小要缩放模型 float oldDistance = Vector2.Distance (oldTouch1.position, oldTouch2.position); float newDistance = Vector2.Distance (newTouch1.position, newTouch2.position); //两个距离之差,为正表示放大手势, 为负表示缩小手势 float offset = newDistance - oldDistance; //放大因子, 一个像素按 0.01倍来算(100可调整) float scaleFactor = offset / 100f; Vector3 localScale = transform.localScale; Vector3 scale = new Vector3 (localScale.x + scaleFactor, localScale.y + scaleFactor, localScale.z + scaleFactor); //在什么情况下进行缩放 if (scale.x >= 0.05f && scale.y >= 0.05f && scale.z >= 0.05f) { transform.localScale = scale; } //记住最新的触摸点,下次使用 oldTouch1 = newTouch1; oldTouch2 = newTouch2; }
效果图
相关文章推荐
- Unity 控制摄像机旋转、放大、缩小
- unity 实现了鼠标滚动放大和缩小物体暨拉近拉远相机的效果
- unity shader 实现自由放大缩小效果
- unity通过改变相机视野实现UI元素放大缩小的效果
- Unity中的游戏界面放大缩小问题
- Unity开发Android程序,拖拽放大缩小物体
- unity手势控制、放大缩小、拖拽、滑动。单击
- 如何在 Unity 2D 和 3D 中放大或缩小以及点击屏幕
- unity中通过收拾实现物体旋转和放大缩小
- unity 多点触控(放大,缩小)
- unity触摸放大缩小旋转
- 4000 unity 双指触摸放大缩小镜头 单指平移镜头
- Unity 模型在移动端进行移动、旋转和放大(缩小)
- Unity狙击枪的视野放大和缩小
- 【Unity】【Code】Unity+触摸屏 单点旋转,双点放大缩小
- unity 鼠标拖拽物体旋转,滚轮放大缩小(一)
- Unity 手势左右上下滑 放大缩小
- jQuery实现点击图标div循环放大缩小功能
- Viewpager中图片缩小放大功能(个人相册)
- Android 自定义View可拖动移动位置及边缘拉伸放大缩小