问题背景

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

排查思路

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

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

解决之道

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

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

解决代码

1) 初始化参数

  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;

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

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

最新文章

  1. scrollView的讲解
  2. html radio check
  3. Asp.Net MVC4入门指南(4):添加一个模型
  4. Topcoder SRM 618 Div2 --900
  5. Core Data入门-备用
  6. git commit的--amend选项
  7. HDU 1074 Doing Homework(状态压缩)
  8. linux的基本操作命令
  9. 风火轮SMC532使用
  10. java常用问题排查工具
  11. ROSETTA使用技巧随笔--Full Atom Representation和Centroid Representation
  12. 哈,今天终于在电脑上吧oracle给装上了
  13. thinkphp结合layui上传视频
  14. ubuntu 安装MySQLdb
  15. C++ : Boost : Rational 有理数类
  16. React.Component 与 React.PureComponent(React之性能优化)
  17. CSS基础小记
  18. Python爬取招聘信息,并且存储到MySQL数据库中
  19. react中 props,state与render函数的关系
  20. 3dsmax2014的下载、安装与注册激活教程详解

热门文章

  1. AuthorizeAttribute示例
  2. 一稿设计多端适配优雅的解决方案 - rem
  3. AWS系列-EC2默认限制说明
  4. 83、android的消息处理机制(图+源码分析)——Looper,Handler,Message
  5. js/vue 高德地图绘制驾车路线图
  6. coderfun-boot接私活利器,文档详实,非一般的开发速度
  7. JAVA基础之sql模糊匹配、外键以及jsp中include的用法
  8. Zabbix添加web页面监控告警
  9. Python全栈day9(Python基础)
  10. qt and redis desktop manager