码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-06 22:00:06      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

问题背景

使用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《卷一》 统一坐标

标签:c   style   class   blog   code   java   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!