cocos2dx 坐标系

13 篇文章 0 订阅

    cocos2dx 坐标系的概念比较多有cocos2dx坐标系,屏幕坐标系,openGL坐标系,世界坐标系,本地坐标系。还有一个和位置有关的概念就是描点( anchor point)

 

    cocos2dx坐标系VS 屏幕坐标系,这两个坐标系都是2D坐标系:

         cocos2dx坐标系在左下角,Y轴向上,X轴向右

         屏幕坐标系在左上角,Y轴向下,X轴向右

    OpenGL坐标系:

        openGL坐标系在屏幕的左下角,Y轴向上,X轴向右

 

    从上可以看出,cocos2dx的坐标系和OpenGL坐标系是一样的,而且是和笛卡儿积的坐标系是一样的。

    iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,是和cocos2dx坐标系与OpenGL坐标系完全不同的坐标系。

 

                    

 

 

   在开发中,我们经常会提到两个比较抽象的概念-世界坐标系和本地坐标系。这两个概念可以帮助我们更好的理解节点在Cocos2d坐标系中的位置以及对应关系

 

  

   世界坐标系(World Coordinate) VS 本地坐标系(Node Local)

       世界坐标系又叫相对坐标系  ,是游戏开发中的一个概念,因此世界指的就是游戏世界,可以理解世界坐标系为游戏坐标系。

       cocos2dx中的元素是有父子关系的,我们通过节点的setPostion设置的位置,其实就是相对父节点的本地坐标系,而非世界坐标系。也就是设置的是相对于父节点中的位置,在父节点世界中的位置。

     本地坐标系又叫绝对坐标系,是节点在父节点中的位置。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点关联的坐标系将随之移动或改变方向。

    描点就是节点的参考点,比如设置一个精灵的位置为ccp(100,100),其实就是设置这个描点所在位置为100,100的位置

   

我们创建一个灰色的Sprite的图像作为父对象,创建一个绿色的Sprite作为子对象。设置父对象的位置为ccp(100,100),锚点ccp(0,0),子对象的位置在ccp(0,0),锚点ccp(0.5,0.5)。

1    CCSprite* parent = CCSprite::create("parent.png");
 2    parent->setAnchorPoint(ccp(0, 0));// Anchor Point
 3    parent->setPosition(ccp(100, 100));
 4    parent->setAnchorPoint(ccp(0, 0));
 5    addChild(parent);
 6
 7    //create child 
 8    CCSprite* child = CCSprite::create("child.png");
 9    child->setAnchorPoint(ccp(0.5, 0.5));
10    child->setPosition(ccp(0, 0));
11    parent->addChild(child);//add child sprite into parent sprite.

我们设置了子对象的位置在ccp(0,0),父对象的位置在ccp(100,100),因此,子对象显示在如图所示位置:

 

    

    
                      

 
 

     

       

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值