cocos2d-x 、锚点与坐标系详解

转载 2017年09月21日 15:49:48

Cocos2dx概念介绍(游戏开发中不同的坐标系,cocos2dx锚点)

注:ccp是cocos2dx中的一个宏定义, #define ccp(__X__,__Y__)CCPointMake((float)__X__, (float)__Y__), 在此文章中表示坐标信息

1、笛卡尔坐标系

你可能在学校的几何学上已经知道笛卡尔坐标系。如果你忘记了,下面的图片可以让你回忆一下:

有3中类型的坐标系在游戏开发中你会用的到。

1)UI坐标系:

一般用于iso、android、windows sdk中:

原点(x=0,y=0)在左上角。

x方向从左侧向右侧递增。

y方向从屏幕顶部向底部递增。

 

2)Direct3D坐标系

DirectX用左手笛卡尔坐标系

3)OpenGL和Cocos2D坐标系

Cocos2dx和OpenGL一样用右手坐标系,在二维世界里,我们仅仅使用x轴和y轴,那么在cocos2d游戏中:

 

原点在屏幕的左下角,意味着屏幕在右手坐标系的第一象限中。

X轴从屏幕左侧向右侧延伸

Y轴从屏幕底部向顶部延伸

底下有张图片可以帮你理解cocos2dx坐标系:

2 父类和子类:

每一个继承自CCNode的类都有一个锚点属性。当决定如何绘制对象(Sprite,Layer,一起其他的)的时候,cocos2d-x将会考虑位置信息以及锚点信息。并且,当旋转一个物体的时候,cocos2d-x也会绕着锚点旋转。

我们创建一个灰色的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),因此,子对象显示在如图所示位置:

6、锚点

锚点被用于位置和旋转物体。锚点是相对坐标(也就是一个百分比),经常被用来对应一个物体内的点。例如,锚点是ccp(0.5,0.5)(表示x方向在物体50%的位置,y方向50%的位置)对应物体的中心。当设置物体位置的时候,调用setPositon时,锚点信息也会在坐标系中展示。相同的,当转动物体,物体将会随锚点转动。

例如,如下精灵有一个锚点cpp(0,0)并且位置在ccp(0,0):

  

 

因此,精灵被放置在屏幕左下角。


1// create sprite
2CCSprite* sprite = CCSprite::create("bottomleft.png");
3sprite->setAnchorPoint(ccp(0, 0));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);

 

在如下的例子中,展示了锚点坐标的相对性,锚点被赋值为ccp(0.5,0.5),位于精灵的中心。

 

1// create sprite
2CCSprite* sprite = CCSprite::create("center.png");
3sprite->setAnchorPoint(ccp(0.5, 0.5));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);

正如你所看到的的,精灵的中心位置被放置在了坐标原点(0,0)。这也就是说锚点不是一个像素值。锚点的X和Y值是相对于该节点的大小。

你也可以设置锚点为ccp(0.3,0.3),物体左下角锚点是(0,0),右上角是(1,1),因此ccp(0.3,0.3)表示在X方向上30%位置,Y方向上30%位置。

相关文章推荐

cocos2d-x坐标系和锚点整理

原文链接:http://blog.csdn.net/wen294299195/article/details/7867595 在cocos2d-x中一共有四种坐标: (1)屏幕坐标系 ...

【cocos2d-x入门实战】微信飞机大战之三:引擎坐标系,锚点和背景滚动

cocos2d-x之微信打飞机实战演习,原滋原味的微信打飞机源码分享。

[cocos2d-x3.x学习笔记]坐标系 锚点 Z值

坐标系: 引擎坐标(左下为原点)          世界坐标/绝对坐标/全局坐标          本地坐标/相对坐标 屏幕坐标(左...

Cocos2d-x学习(3) - cocos2d坐标系,锚点

1、OpenGL的坐标系     Cocos2d是基于OpenGL开发的,所以Cocos2d的坐标系和OpenGL的坐标系是一致的,都是按照图示方向。和我们平时最常见到的坐标系也是一致的。 2...

【爱上cocos2d-x之九】cocos2d-x坐标系与anchorPoint锚点

1. cocos2d-x坐标系 UI坐标系 iOS / Android / Windows SDK中的通用UI坐标系: 起点坐标(x=0,y=0)位于左上角,X轴坐标从左向右增加,Y轴坐标由上向下增加...

cocos2d-x 锚点与位置图解

1.在cocos2d-x中,谈论某某某物体的位置时,即锚点的坐标点。          2. 锚点的取值范围是0-1,分别指的是该锚点在x轴的比例,和在y轴的比例。如图所示,左下角的锚点是(0,...

cocos2d-x AnchorPoint锚点

锚点是定位和变换操作的一个重点。锚点我们可以看成用一根图钉将一张纸或者相片钉在墙上的那个点。 节点的位置是由我们设置的position和anchor point一起决定的。 值得一提的是,anch...

Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验

结论:实践证明这三个东西的默认坐标都是0,0 默认锚点都是0.5,0.5。bool HelloWorld::init() { bool bRet = false; do { ...

cocos2d-x 3.2锚点,Point,addchild,getcontensize

一,锚点    打个比方。在墙挂一幅画时,要钉一个钉子,那个钉子就是锚点。            然后挂图时,钉子(锚点)放在要订的位置(position),订下去。完成(贴图结束)。   ...

cocos2d-x AnchorPoint锚点

cocos2d-x AnchorPoint锚点   转至:http://blog.csdn.net/xuguangsoft/article/details/8425623 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)