NGUI混合FingerGesture《卷一》 统一坐标
问题背景
使用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;
NGUI混合FingerGesture《卷一》 统一坐标的更多相关文章
- NGUI混合FingerGesture《卷二》分离触摸事件
背景 在使用NGUI按钮组件的时候,点击按钮同时触发FingerGesture的Touch事件, 通俗点讲,NGUI点击之后,点击事件被FingerGesture又执行了一遍. 解决思路 持有一个全局 ...
- NGUI研究之3D模型坐标转2D屏幕坐标-血条
刚好今天有朋友问我,比較典型的样例就是游戏里面人物的血条. 原理非常easy就是把3D点换算成2D的点.可是因为NGUI自身是3D所以我们须要先把NGUI下的点转成2D点.然后在把他转成3D的点 ...
- [Unity3D]Unity3D叙利亚NGUI血液和技能的冷却效果
---------------------------------------------------------------------------------------------------- ...
- OpenCV2:图像的几何变换,平移、镜像、缩放、旋转(2)
在OpenCV2:图像的几何变换,平移.镜像.缩放.旋转(1)主要介绍了图像变换中的向前映射.向后映射.处理变换过程中浮点坐标像素值的插值算法,并且基于OpenCV2实现了两个简单的几何变换:平移和镜 ...
- ggplot2包--R可视化
1.ggplot2发展历程 ggplot2是Hadley在爱荷华州立大学博士期间的作品,也是他博士论文的主题之一,实际上ggplot2还有个前身ggplot,但后来废弃了,某种程度上这也是Hadley ...
- C#基础教程/适合初学者
C#基础教程 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当 ...
- WEB 三维引擎在高精地图数据生产的探索和实践
1. 前言 高精地图(High Definition Map)作为自动驾驶安全性不可或缺的一部分,能有效强化自动驾驶的感知能力和决策能力,提升自动驾驶的等级.对于自动驾驶来说,高精地图主要是给机器用的 ...
- 实时渲染基础(4)纹理(Texture)
目录 纹理映射(Texture Mapping) 球形贴图(Spherical Map) 立方体贴图(Cube Map) 纹理走样问题 Mipmap 各向异性过滤(Ripmap) 纹理应用技术(Tex ...
- Html5 舞动的雨伞
HMTL5的学习断断续续,方法不用又生疏了,昨天做的一个雨伞的Demo,先看看效果 主要是运用了中心点变换和旋转两个方法.不同的动画用定时器控制, 下面是全部代码: <canvas id=&qu ...
随机推荐
- MFC中给控件添加变量,DoDataExchange中
DoDataExchange函数其实是一项数据动态绑定技术.比如你在写动态按钮过程中须对按钮添加变量时,怎么添加?控件类已经写好了,其变量是已经固定的.你要添加新的变量就要用到DoDataExchan ...
- Python+PyQt5:停靠组件QDockWidget的实现
QMainWindow主窗体中放置停靠组件QDockWidget的实现流程: 第一步:创建QMainWindow窗体,这是承载QDockWidget的主体 第二步:创建QDockWidget组件实例, ...
- CPU GPU设计工作原理《转》
我知道这非常长,可是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们究竟是怎么"私下勾搭"的.会有利于我们用程序来指挥它们... ...
- python 自己定义异常
通过创建一个新的异常类,就可以命名自己的异常,异常应该是典型的继承自Exception类 例如: # 定义了一个自己的异常类,可在适当时候通过raise来触发它class ExError(Except ...
- CSS解决图片缩小不变形
我会在图片上加: <img style="max-width:80px;max-height:80px;"> 限制其最大宽度和高度
- 尼康D600闪光灯下按钮
闪光灯下面那个是AF模式按钮 按一下,按两下,按三下
- Spring boot:logback文件配置
resources文件夹下:新建logback-spring.xml文件. 文件内容like: <?xml version="1.0" encoding="UTF- ...
- PAT 甲级 1104 sum of Number Segments
1104. Sum of Number Segments (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Pen ...
- iass,pass,cass,sass,vm,container
分布式存储hdfs 大文件,swift 对象存贮. 为七牛的CDN系统目前大部分还不是自建的,采用的是整合其它CDN的方式做的.也就是说出了七牛的文件分发使用的是网宿和蓝汛的老牌CDN的分发节点,自身 ...
- js 获取Array数组 最大值 最小值
https://stackoverflow.com/questions/1669190/find-the-min-max-element-of-an-array-in-javascript // 错误 ...