OpenGL坐标系

Cocos2dx以OpenGL&OpenGL ES为基础,支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。

l 屏幕坐标系

屏幕坐标系使用的是不同的坐标系统,原点在屏幕左上角,x轴向右,y轴向下。触摸屏事件传入的位置信息使用的是该坐标系,在cocos2dx中对触摸事件做出响应前,需要首先把触摸点转化到OpenGL坐标系。这一点在后面的触屏信息中会详细介绍,可以使用CCDirector的convertToGL方法来完成这一转化。

l 世界坐标系

世界坐标系也叫作绝对坐标系,是游戏开发中建立的概念。“世界”即是游戏世界,它建立了描述其他坐标系所需要的参考标准。我们能够用世界坐标系来描述其他坐标系的位置。它是cocos2dx中一个比较大的概念。

l 本地坐标系

本地坐标系是和特定节点相关联的坐标系。每个节点都有独立的坐标系。当节点移动或改变方向时,和该节点关联的坐标系(它的子节点)将随之移动或改变方向。这一切都是相对的,相对于基准的,只有在节点坐标系中才有意义。Node类的设置位置使用的就是父节点的节点坐标系,它和OpenGL坐标系的方向是一致的,原点在父节点的左下角。如果父节点是场景树中的顶层节点,那么它使用的节点坐标系就和世界坐标系重合了 。

Cocos2dx中的元素是父子关系的层级结构。通过Node设置位置使用的是相对其父节点的本地坐标系,而非世界坐标系。最后在绘制屏幕的时候,Cocos2dx会把这些元素的本地节点坐标映射成世界坐标系坐标。世界坐标系和OpenGL坐标系方向一致。