Unity双指触控缩放视野

Input.touchCount为屏幕触摸的数量(2个手指)
我们通过双指移动完成对视野缩放,所以屏幕上需要至少2个手指并且手指在移动

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

说明:
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);

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

//是否缩放
private bool IsZoom = false;
//当前双指触控间距
private float DoubleTouchCurrDis;
//过去双指触控间距
private float DoubleTouchLastDis;

if (!IsZoom )
{
    DoubleTouchLastDis = DoubleTouchCurrDis;
    IsZoom = true;
}

float distance = DoubleTouchCurrDis - DoubleTouchLastDis;
DoubleTouchLastDis = DoubleTouchCurrDis;

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

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

通过distance具体的数值变化控制缩放
不过由于博主手残,选择了固定变化
如下

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

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

完整代码如下

 //是否缩放
    private bool IsZoom = false;
    //当前双指触控间距
    private float DoubleTouchCurrDis;
    //过去双指触控间距
    private float DoubleTouchLastDis;


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;
        }
  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值