坐标系统
屏幕坐标系:原点在左上角
OpenGl坐标系:原点在左下角(Cocos2d-x使用的坐标系)
世界坐标系:绝对坐标系
本地坐标系:物体本身的坐标系
锚点:操作物体的参考点
在Cocos2d-x中Layer的Anchor Point为默认值(0, 0),其他Node的默认值为(0.5, 0.5)
锚点设置为(0,0)则表示物体左下角为锚点
锚点设置为(0.5,0.5)则表示物体的中心点为锚点
锚点的的函数
setAnchorPoint()//设置锚点
getAnchorPoint()//获得锚点
setIgnoreAnchorPointForPosition()//不使用锚点,默认以(0,0)为操作点
坐标转换
通过导演类的坐标转换
通过导演类的坐标转换函数,屏幕坐标系和OpenGl坐标系是可以相互转换的
setAnchorPoint()//设置锚点
getAnchorPoint()//获得锚点
setIgnoreAnchorPointForPosition()//不使用锚点,默认以(0,0)为操作点
节点的坐标转换
节点自身也有坐标转换的函数
代码示例,将sprite2的坐标转换为相对于sprite1的坐标
Point sprite2 = sprite1->convertToNodeSpace(sprite2->getPosition());
convertToNodeSpace(worldPoint)//将世界坐标转换为本地坐标,相对于节点左下角的坐标
convertToWorldSpace(const Vec2& nodePoint)//将本地坐标转换为世界坐标,相对于节点左下角的坐标
convertToNodeSpaceAR(const Vec2& worldPoint)//将世界坐标转换为本地坐标,相对于锚点的坐标
convertToWorldSpaceAR(const Vec2& nodePoint)//将本地坐标转换为世界坐标,相对于锚点的坐标
这里需要注意的是,所有节点所设置的坐标位置都是相对于父节点的,也就是在本地坐标系中的位置。
逻辑数值与真实数值
逻辑值
getContenSize();//获取节点原始尺寸的大小
getPosition();//获取逻辑坐标
真实值
getContentSizeInPixels();//获取节点真实像素尺寸(在cocos2d-x3.15版本没有看到这个函数)
getPositionInPixels();//获取缩放后的节点坐标(在cocos2d-x3.15版本也没有看到这个函数)
因为在3.15版本里没有找到上面两个函数,所以用下面的函数获取真实大小
getBoundingBox();//获取缩放后的外框大小
缩放因子
导演类包含了设置缩放因子的函数
setContentScaleFactor();//设置缩放因子
getContentScaleFactor()//获取缩放因子