博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI混合FingerGesture《卷一》 统一坐标
阅读量:5014 次
发布时间:2019-06-12

本文共 877 字,大约阅读时间需要 2 分钟。

问题背景

使用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;

 

 

 

转载于:https://www.cnblogs.com/kimmy/p/3765649.html

你可能感兴趣的文章
Java中接口与接口和类之间的关系
查看>>
linux shell 发送email 附件
查看>>
人群密度估计 CrowdCount
查看>>
JSON.parse()和JSON.stringify()
查看>>
.net 常用正则表达式
查看>>
Java泛型中的标记符含义:
查看>>
初遇GitHub
查看>>
[C# 网络编程系列]专题八:P2P编程
查看>>
Jsの练习-数组常用方法 -forEach()
查看>>
动态绑定treeview的方法
查看>>
jvm参数
查看>>
3-1 案例环境初始化
查看>>
读《构建之法》第四章和十七章有感
查看>>
开发一个12306网站要多少钱?技术分析12306合格还是不合格
查看>>
Selenium 入门到精通系列:六
查看>>
html5——动画案例(时钟)
查看>>
ios中用drawRect方法绘图的时候设置颜色
查看>>
数据库中的外键和主键理解
查看>>
个人博客03
查看>>
Expression<Func<T,TResult>>和Func<T,TResult>
查看>>