【2014-01-21】cocos2dx学习笔记:坐标系
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2014-01-21 标题cocos2dx学习笔记坐标系分类编程 / C C / cocos2dx 标签cocos2dx·坐标系cocos2dx学习笔记坐标系cocos2dx坐标系笛卡尔坐标系UI坐标系》》》》屏幕坐标系Direct3D坐标系OpenGL坐标系屏幕坐标系和OpenGL坐标系的转换绝对坐标系相对坐标系绝对坐标系和相对坐标系的转换最近项目中用到了cocos2dx来开发一个基于陀螺仪的demo忙了半个星期一边学习一边开发总算搞了出来。这里备份下开发中学习到的一些cocos2dx知识。cocos2dx坐标系以下转自【 http://www.ityran.com/archives/3367 】笛卡尔坐标系你可能上学的时候就已经知道“笛卡尔坐标系”了它在几何课本里经常用到。如果你已经忘得差不多了下面这些图片可以很快唤起你的记忆UI坐标系》》》》屏幕坐标系iOS/Android/Windows SDK中的通用UI坐标系起点坐标(x0, y0)位于左上角X轴从屏幕最左边开始由左向右渐增Y轴坐标从屏幕最上方开始由上向下渐增详见下图Direct3D坐标系DirectX 使用Left-handed Cartesian CoordinateOpenGL坐标系Cocos2d-x/-html5/-iphone使用的坐标系和OpenGL的坐标系一样名为“Right-handed Cartesian Coordinate Syste”。在2D世界中我们仅会使用x轴和y轴。所以在你的cocos2d游戏中起点坐标(x0, y0)位于左下角这意味着屏幕位于X轴从屏幕最左边开始由左向右渐增Y轴坐标从屏幕最下方开始由下向上渐增以下转自【 http://blog.csdn.net/jackystudio/article/details/12830971 】屏幕坐标系和OpenGL坐标系的转换它们的转换导演类CCDirector已经封装好了两个函数供我们使用。//UIKit To OpenGL CCPoint convertToGL(const CCPoint obPoint); //OpenGL To UIKit CCPoint convertToUI(const CCPoint obPoint);绝对坐标系绝对坐标系也叫世界坐标系从名字可以看来绝对坐标系是一个恒坐标系不参考也不依赖于其他坐标系。在cocos2d-x中它使用的是OpenGL坐标系。不过因为我们多在CCLayer上放置游戏元素所以一般比较少直接用到绝对坐标系。相对坐标系cocos2d-x元素是有层次关系的节点使用的是相对父节点的位置坐标也就是相对坐标系也叫本地坐标系屏幕绘制的时候cocos2d-x会自动将相对坐标系转换为绝对坐标系渲染到屏幕的绝对位置上。绝对坐标系和相对坐标系的转换CCNode提供给我们相对坐标系和绝对坐标系的转换函数。CCPointconvertToNodeSpace(constCCPointworldPoint);//将世界坐标转换为对象节点内坐标忽略锚点以当前父节点左下角坐标为标准CCPointconvertToWorldSpace(constCCPointnodePoint);//将对象节点内坐标转换为事件坐标忽略锚点以当前父节点左下角坐标为标准CCPointconvertToNodeSpaceAR(constCCPointworldPoint);//将世界坐标转换为基于锚点的对象节点内坐标CCPointconvertToWorldSpaceAR(constCCPointnodePoint);//将局域锚点的对象节点内坐标转换为世界坐标