cocos2d的坐标转换问题

cocos2d为转换坐标提供了以下几个方法:

如果对具体的坐标系不了解,可以参考下面两个文章:

以上四个方法主要涉及两种情况:

  1. 从当前坐标转换为世界坐标

    这里一定要注意的是,调用者(消息发出者)必须为需要转换坐标对象的父节点(parent node),参数是需要转换对象的坐标(相对于父类的坐标)。返回值是世界坐标;
  2. 从当前坐标点转换为相对某个CCNode的坐标

    node2并不是node1的父节点,node1获得的是相对于node2坐标系的坐标。

以上的调用并没有考虑anchorPoint(锚点)信息,如果需要获取相对于锚点作为参考点的坐标,则调用以下方法:

不使用AR相关方法则获取相对于坐标(0,0)的坐标,如果使用AR相关方法,则获取相对于锚点的坐标。

如果有错误,还请指教。

关于cocos2d坐标系

无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥奔头了。所以玩cocos2d,一上来就先把各种与坐标有关的东西搞清楚。

基本的两个坐标系:屏幕坐标系和GL坐标系。

  1. 屏幕坐标系x轴朝右,y轴朝下。默认原点在左上角。
  2. GL坐标系x轴朝右,y轴朝上。默认原点在左下角。

在调用任何需要设置位置的函数,或从函数获取位置信息前,必须要明确这个函数使用哪个坐标系。比如调用CCNode类的setPosition函数,它使用的就是GL坐标系。比如在处理触摸事件时CCTouch对象中的坐标就是屏幕坐标系。

继续阅读