cocos2dx中的坐标系和锚点
2015-09-09 19:23
435 查看
在cocos2dx中,坐标系和锚点是非常重要的基础。
在cocos2dx中,坐标原点位于画面的左下角,X轴水平向右递增,Y轴垂直向上递增。使用这种坐标系的原因,是因为cocos2dx是基于OpenGL的3DAPI创建。
锚点:是向画面输出图像或者文本等对象的基准点。
引入锚点是因为我们所插入的精灵一般是一张图片,那么我们在对精灵设置坐标的时候,应该让精灵中的哪个点对准我们所设置的坐标呢?由此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)对准。
写的有点粗糙,欢迎大家斧正,你们的意见是我最大的进步!
在cocos2dx中,坐标原点位于画面的左下角,X轴水平向右递增,Y轴垂直向上递增。使用这种坐标系的原因,是因为cocos2dx是基于OpenGL的3DAPI创建。
锚点:是向画面输出图像或者文本等对象的基准点。
引入锚点是因为我们所插入的精灵一般是一张图片,那么我们在对精灵设置坐标的时候,应该让精灵中的哪个点对准我们所设置的坐标呢?由此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)对准。
写的有点粗糙,欢迎大家斧正,你们的意见是我最大的进步!
相关文章推荐
- 关于cocostudio中如何获取每一帧属性framedata的问题
- Cocos2d-x 3.x Shader变暗和变灰
- Cocos2D-X 学习笔记
- COCOS2D-X FRAME动画创作随笔
- cocos2d-x 3.2使用ttf创建Label
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第十三节:骨骼点绑定
- cocos2dx实现游戏属性雷达图
- cocos2dx +lua 面向对象
- cocos2dx中的动画以及TexturePacker使用
- 八、TexturePacker命令行压缩图片
- 七、cocos2d热更新
- Cocos2d-x结合Cocosbuilder开发游戏大致流程
- cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
- 【开发者指南】第二章:Cocos2d-x中的基础概念——学习笔记
- cocos2dx编程 之如何获取节点的中心点坐标
- cocos2d-x 3.x的底层渲染机制
- Cocos2d-x屏幕适配新解
- cocos2d文件打包步骤
- Cocos2d-x中使用Socket方法总结
- cocos2dx骨骼动画Armature源码剖析(一)