UNITY

Unity 两指触屏缩放视野

2019-10-08  本文已影响0人  Lennie_S

Input.touchCount为屏幕触摸的数量(2个手指)

我们通过双指移动完成对视野缩放,所以屏幕上需要至少2个手指并且手指在移动

if ((Input.touchCount  ==2) && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))

        {

        }

1

2

3

说明:

Input.touchCount为屏幕上的触摸数(也就是2个手指)

Input.GetTouch(0),Input.GetTouch(1)分别指向2个手指

Input.GetTouch(1).phase == TouchPhase.Moved是手指在移动的意思

接下来通过2手指间距的变换来缩放屏幕

先获取手指间距

Touch touch1 = Input.GetTouch(0);

            Touch touch2 = Input.GetTouch(1);

            DoubleTouchCurrDis = Vector2.Distance(touch1.position, touch2.position);

1

2

3

4

通过手指间距的变化,判断是缩小视野,还是放大视野

//是否缩放

private bool IsZoom = false;

//当前双指触控间距

private float DoubleTouchCurrDis;

//过去双指触控间距

private float DoubleTouchLastDis;

if (!IsZoom )

{

    DoubleTouchLastDis = DoubleTouchCurrDis;

    IsZoom = true;

}

float distance = DoubleTouchCurrDis - DoubleTouchLastDis;

DoubleTouchLastDis = DoubleTouchCurrDis;

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

我们通过distance这一数据完成缩放

比如这样

Translate( new Vector3( 0 , 0 , distance*Time.deltaTime*3 ) );//移动摄像机

1

通过distance具体的数值变化控制缩放

不过由于博主手残,选择了固定变化

如下

  mainCamera.updistance += (distance > 0 ? 1 : -1) * 1 ;//更改了摄像头的高度

1

这样不用刻意通过手指来控制缩放视野的比例,只要有缩放的手势,就能缓慢缩放视野

完整代码如下

//是否缩放

    private bool IsZoom = false;

    //当前双指触控间距

    private float DoubleTouchCurrDis;

    //过去双指触控间距

    private float DoubleTouchLastDis;

1

2

3

4

5

6

7

8

9

update下

if ((Input.touchCount > 1) && (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved))

        {

            Touch touch1 = Input.GetTouch(0);

            Touch touch2 = Input.GetTouch(1);

            DoubleTouchCurrDis = Vector2.Distance(touch1.position, touch2.position);

            if (!IsZoom )

            {

                DoubleTouchLastDis = DoubleTouchCurrDis;

                IsZoom = true;

            }

            float distance = DoubleTouchCurrDis - DoubleTouchLastDis;

            mainCamera.updistance += (distance > 0 ? 1 : -1) * 1 ;//更改了摄像头的高度

            DoubleTouchLastDis = DoubleTouchCurrDis;

        }

————————————————

版权声明:本文为CSDN博主「寂灭万乘」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_34244317/article/details/78671663

上一篇下一篇

猜你喜欢

热点阅读