无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥搞头了。所以玩cocos2d,一上来就需要先把各种与坐标有关的东西搞清楚。
1.OpenGL坐标系
Cocos2d-x使用的是OpenGL坐标系,原点在屏幕的左下角,x轴向右,y轴向上,也称为笛卡尔坐标系
2.标准屏幕坐标系
屏幕坐标默认原点是在左上角,x轴向右,y轴向下。安卓、IOS的屏幕触摸事件传入的位置信息使用的是该坐标。因此在cocos2d中对触摸事件做出响应前需要把触摸点转化为GL坐标,这里Cocos2d-x已经帮我们做好转换了。
3.世界坐标系
世界坐标系也叫做绝对坐标系,是游戏开发中建立的概念。因此,“世界”指游戏世界。cocos2d中的元素是有父子关系的层级结构,我们通过Node的setPosition设定元素的位置使用的是相对与其父节点的本地坐标系而非世界坐标系。最后在绘制屏幕的时候cocos2d会把这些元素的本地坐标映射成世界坐标系坐标。
4.本地坐标系
本地坐标系也叫相对坐标系,是和节点相关联的坐标系。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点关联的坐标系将随之移动或改变方向。
5.锚点
与坐标系相关还有个比较重要的就是锚点。将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点在父节点坐标系上的位置。在Cocos2d-x中Layer的Anchor Point为默认值(0,0),其他Node的默认值为(0.5,0.5)。这里需要注意的是Layer默认的话是忽略锚点的,所以要调用ignoreAnchorPointForPosition( ) 接口来改变锚点