常见坐标系分为屏幕坐标系、OpenGL坐标系、世界坐标系、本地坐标系
屏幕坐标系和cocos2d坐标系
标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系。
iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下。
Cocos2d坐标系和OpenGL坐标系一样,原点为屏幕左下角,x向右,y向上。
![]()
—— [ cocos官网 ]
世界坐标系
世界坐标系也叫绝对坐标系,世界坐标也就是绝对坐标,是相对于整个游戏而言的。
例如,整个地球就是一个世界坐标系,我们在自己的国家拥有自己的本地坐标,同时,我们相对于世界的坐标就是世界坐标系。
本地坐标系
也叫节点坐标系,相对于一个对象的父对象而言。在调用setPosition( )函数设置对象位置时使用的就是本地坐标,getPosition()也是获取当前节点的本地坐标。
相对于其父对象而言,原点在父对象的左下角,x轴向右,y轴向上。
例如:
auto layer = Layer::create();
auto sprite = Sprite::create("HelloWorld.png");
layer->addChild(sprite,1);
这里layer就是父对象,sprite就是子对象。
如果layer移动,那么sprite也跟着移动
锚点
锚点指定了贴图上和所在节点的原点重合的点的位置。
锚点的默认值是(0.5,0.5),表示锚点位于贴图长度乘0.5和宽度乘0.5的位置。
关于锚点有4个方法:
setPosition()//以节点左下角为原点
getAnchorPoint()//返回锚点的位置
setAnchorPoint()//设置锚点的位置
setIsRelativeAnchorPoint(bool)//将该节点的锚点设为节点的原点
getIsRelativeAnchorPoint()//返回是否将该节点的锚点设为节点的原点
坐标系之间的相互转换
屏幕坐标系和OpenGL坐标系转换
函数调用
//屏幕坐标系转换成OpenGL坐标系
Director::convertToGL(Point *);
//OpenGL坐标系转换成屏幕坐标系
Director::convertToUI(Point *);
使用场合
触摸屏幕时,将触摸点转换成OpenGL坐标系,来判断和是否点到了某个控件
本文介绍了cocos2dx中的各种坐标系,包括屏幕坐标系、OpenGL坐标系、世界坐标系和本地坐标系,详细讲解了它们的特点和转换方法。还提到了锚点的概念及其在坐标转换中的作用。

1万+

被折叠的 条评论
为什么被折叠?



