您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x游戏引擎开发[5]---- 坐标体系

2016-10-13 18:10 246 查看
在opengl坐标体系中有两个非常重要的参数,即锚点和位置。
锚点:作为位置的参考点,锚点在设置某一个物件(如CCSprite,CCLayer)的位置时,其参照位置,数据为(0.0-1.0)之间,默认是(0.5, 0.5),也就是说其默认参照位置是该物件的中心。如锚点为(0.5,0.5),而矩形的大小是200*100,那么这个锚点相对于矩形的坐标系是(100,50),即是矩形的中间。

 我们一般把坐标体系分为3个{屏幕坐标,世界坐标,本地坐标}
主要是都是本地坐标,因为世界坐标相对来说也是屏幕的本地坐标,而屏幕坐标就是现在打开的游戏界面大小。

 
锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。节点的位置是由我们设置的position和anchor point一起决定的。
值得一提的是,anchor point的默认位置Layer的是左下,而其他的node是中点。节点的原点是父节点的左下角。Layer* layer1 = LayerColor::create(ccc4(255,0,0,255), 300, 200);

Layer* layer2 = LayerColor::create(ccc4(255,255,0,255), 100, 100);
 

addChild(layer1);
layer1->addChild(layer2);     



layer2->setPosition(50,50);




可见Layer的锚点是左下角,节点的原点是父节点的左下角。

下面是我的一段做好的移动图像截图代码
CCMoveBy *by = CCMoveBy::create(2, ccp(200, 0));
CCMoveBy *by2 = (CCMoveBy *)by->reverse();
CCSequence *seq = CCSequence::create(by, by2, NULL);

big->runAction(CCRepeatForever::create(seq));

CCMoveBy *lby = CCMoveBy::create(2, ccp(0, -100));
CCMoveBy *lby2 = (CCMoveBy *)lby->reverse();
CCSequence *lseq = CCSequence::create(lby, lby2, NULL);

little->runAction(CCRepeatForever::create(lseq));




这差不多就是整个坐标系的简单介绍和操作了,这个我的主要理解是相对而言,类似于火车在开树在后退,参照物不同的说法一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐