美文网首页UNITY
Unity 两指触屏缩放视野

Unity 两指触屏缩放视野

作者: Lennie_S | 来源:发表于2019-10-08 19:08 被阅读0次

    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

    相关文章

      网友评论

        本文标题:Unity 两指触屏缩放视野

        本文链接:https://www.haomeiwen.com/subject/fglfuctx.html