cocos2d-x坐标系

简介: 项目中有个需求“刮刮卡”,在手指触摸屏幕时,需要动态检查当前触摸的点是否“碰”到某个卡了,如果碰到了就把它显示出来。这里就需要了解一下IOS的坐标系统与OpenGL的坐标系统了   常见的三种坐标系:   UI坐标系,起点(0, 0),位于屏幕左上角, 也称屏幕坐标系,如下图所示  ...

项目中有个需求“刮刮卡”,在手指触摸屏幕时,需要动态检查当前触摸的点是否“碰”到某个卡了,如果碰到了就把它显示出来。这里就需要了解一下IOS的坐标系统与OpenGL的坐标系统了

 

常见的三种坐标系:

 

UI坐标系,起点(0, 0),位于屏幕左上角, 也称屏幕坐标系,如下图所示

 

 

Direct3D坐标系,使用的是左手坐标系(Left-hand Cartesian Coordinate System),Z轴向里

 

OpenGL的坐标系,右手坐标系(Right-hand Cartesian Coordinate System),Z轴向外

 

如果在2D的的世界里,我们只讨论X、Y,实际上就变成二种坐标系了:以左上角为原点、以左下角为原点。这样来看的话,它们唯一的区别就在于Y轴,也就是说它们之前的转换只需要使用(winHeight – y)便可得到在另外一种坐标系的坐标。

 

cocos2d-x返回的点,是它在UI坐标系中的位置,使用CCPoint pt = pTouch->getLocationInView()获得UI坐标系中的坐标点,然后将其转换为OpenGL坐标系的坐标CCDirector::sharedDirector()->convertToGL(touchLocation);

 

使用convertToWorldSpace方法,可将相应的卡片坐标转换为OpenGL中的坐标,然后对它的width、height处理,就可以得到该卡片所占的区域。node的getPosition()只是获得该节点相对它的你节点的位置,所以convertToWorldSpace方法的调用应该如下所示:

nodeParent->convertToWorldSpace(node->getPosition())

 

 

关于cocos2d-x的坐标系的更多信息,可参考这里:

http://www.cocos2d-x.org/wiki/Coordinate_System

目录
相关文章
|
4月前
|
图形学
Unity 坐标系
Unity 坐标系
Unity 坐标系
|
Android开发 iOS开发
【Cocos2d-x】开发基础-Cocos2d-x坐标系
【Cocos2d-x】开发基础-Cocos2d-x坐标系
121 0
|
vr&ar Android开发 iOS开发
Qt之坐标系统
简述 坐标系统由 QPainter 类控制,再加上 QPaintDevice 和 QPaintEngine,就形成了 Qt 的绘图体系。 QPainter:用于执行绘图操作 QPaintDevice:二维空间的抽象层,可以使用 QPainter 在它上面进行绘制。 QPaintEngine:提供了统一的接口,用于 QPainter 在不同的设备上进行绘制。 QPain
1558 0

热门文章

最新文章