cocos2dx中的坐标系和锚点

来源:互联网 发布:信阳淘宝摄影e 编辑:程序博客网 时间:2024/05/17 04:12

在cocos2dx中,坐标系和锚点是非常重要的基础。

cocos2dx中,坐标原点位于画面的左下角,X轴水平向右递增,Y轴垂直向上递增。使用这种坐标系的原因,是因为cocos2dx是基于OpenGL3DAPI创建。

锚点:是向画面输出图像或者文本等对象的基准点。

引入锚点是因为我们所插入的精灵一般是一张图片,那么我们在对精灵设置坐标的时候,应该让精灵中的哪个点对准我们所设置的坐标呢?由此cocos2dx引入锚点的概念。

所以锚点可以说是我们向画面输出对象的基准点。

在cocos2dx中,默认的锚点是(0.5,0.5),当我们把锚点设置为(0,0)的时候,锚点位于对象的左下角,即对象的左下角会和我们设置的对象的坐标点重合。


如图,假设我们所设置的精灵为图上的矩形,精灵对象的位置为(100,100),锚点的位置为(0,0),则精灵对象的左下角就会和点(100,100)重合。


将锚点位置设置为(0,1)时,锚点位于精灵对象的左上角。即精灵对象的左上角会和点(100,100)重合。



将锚点设置为(1,1)时,精灵对象的右上角将和点(100,100)重合。


将锚点设置为(1,0)的时候,精灵对象的右下角将和点(100,100)重合。



上面把锚点设置在不同的位置,输出的图像不同,下面通过一个小例子来更加清晰的认识下锚点。

auto spr1 = Sprite::create("rectange.png");
spr1->setPosition(Point(600, 600));
this->addChild(spr1);

运行上述代码,显示如下效果图:



auto spr = Sprite::create("ball1.png");
spr->setAnchorPoint(Point(0,0));
spr->setPosition(Point(0,0));

        spr1->addChild(spr);

当把锚点设置为(0,0)的时候,精灵的左下角和(0,0)对准。


spr->setAnchorPoint(Point(0,1));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(0,1)的时候,精灵的左上角和(0,0)对准。



spr->setAnchorPoint(Point(1,1));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(1,1)的时候,精灵的右上角和(0,0)对准。


spr->setAnchorPoint(Point(1,0));
spr->setPosition(Point(0,0));
spr1->addChild(spr);

当把锚点位置设置为(1,0)的时候,精灵的右下角和(0,0)对准。



写的有点粗糙,欢迎大家斧正,你们的意见是我最大的进步!

0 0
原创粉丝点击