首页 > 其他 > 详细

NGUI混合FingerGesture《卷一》 统一坐标

时间:2014-06-06 21:59:07      阅读:474      评论:0      收藏:0      [点我收藏+]

问题背景

使用FingerGesture 获取触碰点2D坐标, 将该2D坐标赋值给NGUI元素,发现位置出现偏差。

排查思路

1:NGUI的 (0,0,0)默认位置是在屏幕正中心。而FingerGesture(0,0,0)默认位置是在屏幕的左下角

2:NGUI采用了基于高度的缩放机制,各个分辨率被模拟成一个经过ManualHeight运算之后的结果。  FingerGesture触碰点2D坐标是符合屏幕的分辨率的。

bubuko.com,布布扣

解决之道

1:将GingerGesture触碰的坐标(基于左下角),换算成NGUI的坐标体系(基于屏幕正中心)

2:将换算之后的坐标,乘以当前屏幕和ManualHeight的缩放值。

 

解决代码

1) 初始化参数

bubuko.com,布布扣
  private float _screenHalfWidth;
    private float _screenHalfHeight;
    private float _scaleFactor;


//在类的构造函数里面初始化参数
//SCREEN_NORMAL_HEIGHT的意思见上图,本例使用720高度
   _scaleFactor = GlobalDataHelper.SCREEN_NORMAL_HEIGHT / Screen.height;
        _screenHalfWidth = Screen.width * 0.5f;
        _screenHalfHeight = Screen.height * 0.5f;
bubuko.com,布布扣

 

2)调用,point是FingerGesture的OnGesture事件的参数 e.Position

  Vector3 newPos = new Vector3(point.x - _screenHalfWidth, point.y - _screenHalfHeight) *_scaleFactor;
        transform.localPosition = newPos;

 

 

 

NGUI混合FingerGesture《卷一》 统一坐标,布布扣,bubuko.com

NGUI混合FingerGesture《卷一》 统一坐标

原文:http://www.cnblogs.com/kimmy/p/3765649.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!