当前位置:   article > 正文

Cocos2d-坐标系详解_cocos2d 坐标系

cocos2d 坐标系

Cocos2d-x的坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系。

笛卡尔坐标系

右手系:
这里写图片描述

屏幕坐标系和Cocos2d坐标系

这里写图片描述

世界坐标系(world coordinate)和本地坐标系(local coordinate)

世界坐标系也就是绝对坐标系,Cocos2d中的元素是有父子关系的层级结构,通过Node的setPosition方法设定元素的位置使用的是相对与其父节点的本地坐标系而非世界坐标系,最后绘制屏幕的时候Cocos2d会把这些元素的本地坐标映射成世界坐标系。
本地坐标系也就是相对坐标系,是和节点相关联的坐标系。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点相关联的坐标系将随之移动或改变方向。

锚点(Anchor Point)

将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点在父节点坐标系上的位置。
Anchor Point的两个参数范围为0到1,表示的是乘数因子。(0.5, 0.5)表示Anchor Point位于节点长度和宽度的一半的地方,也就是自己的中心和是父节点对齐的地方。
Cocos2d中Layer的锚点的默认值为0和0,其他Node的默认值为0.5和0.5。
例如:

auto red = LayerColor::create(Color4B(255, 100, 100, 128), visibleSize.width/2, visibleSize.height/2);
auto green = LayerColor::create(Color4B(100, 255, 100, 128), visibleSize.width/4, visibleSize.height/4);
red->addChild(green);
this->addChild(red, 0);
  • 1
  • 2
  • 3
  • 4

这里写图片描述
因为Layer比较特殊,它默认忽略锚点,所以要调用ignoreAnchorPointForPosition()接口来改变锚点。例如:

auto red = LayerColor::create(Color4B(255, 100, 100, 128), visibleSize.width/2, visibleSize.height/2);
red->ignoreAnchorPointForPosition(false);
red->setAnchorPoint(Point(
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/90248?site
推荐阅读
相关标签
  

闽ICP备14008679号