cocos2d-x坐标系
2013-11-19 16:54
471 查看
项目中有个需求“刮刮卡”,在手指触摸屏幕时,需要动态检查当前触摸的点是否“碰”到某个卡了,如果碰到了就把它显示出来。这里就需要了解一下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
常见的三种坐标系:
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
相关文章推荐
- Cocos2d-x坐标系理解
- Cocos2d-x 3.0坐标系详解
- Cocos2d-x 3.0坐标系详解---------------------cocos2d-x3.0正式版本(7.16)
- cocos2d-x Sprite旋转角度坐标系
- Cocos2d-JS坐标系
- Cocos2d-x坐标系
- cocos2d-x游戏引擎核心之一——坐标系
- cocos2d坐标系
- Cocos2d-x坐标系理解
- Cocos2d-x 3.0坐标系详解
- 关于cocos2d坐标系的一点点心得
- Cocos2d-x坐标系介绍
- cocos2d 坐标系使用
- Cocos2d-x 坐标系及其坐标转换
- 关于cocos2d中的坐标系
- Cocos2d-JS坐标系
- cocos2d坐标系转换与判断点击命中的方法
- cocos2d 坐标系
- cocos2d-js中的回调函数中世界坐标系和节点坐标系的相互转换