Cocos2dx学习笔记(4)——Z轴

这一章要涉及到坐标系的基础知识,用心听讲!

本文仅供个人记录和复习,不用于其他用途

X、Y、Z轴

虽然我们看到的游戏画面是平面的,但是事实上游戏里仍然有Z轴的概念。举个简单的例子,当两个精灵的位置重合时,总会有一个在上一个在下,在上的会把下面的遮盖住,那么这个就是Z轴的概念。

示例

如上图所示,层2的内容会把层1的内容遮住。当然,如果两个对象的大小不一样,遮挡自然也可能不全面,所表达出来的游戏画面也会有所不同。如果了解过PS,那么这个和PS的图层概念是一样的。

具体代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
bool T03LayerZorder::init()
{
if (!CCLayer::init())
{
return false;
}
CCSize winsize = CCDirector::sharedDirector()->getWinSize();
CCSprite *plant = CCSprite::create("sprite/plant.png");
CCSprite *sun = CCSprite::create("sprite/p_1_01.png");
CCSprite *zombie = CCSprite::create("sprite/framecache/z_1_attack_01.png");
plant->setPosition(ccp(winsize.width / 2 + 30, winsize.height / 2 - 30));
sun->setPosition(ccp(winsize.width / 2, winsize.height / 2));
zombie->setPosition(ccp(winsize.width / 2 - 30, winsize.height / 2 + 30));
addChild(plant);
addChild(sun);
addChild(zombie);
//设置Z轴
plant->setZOrder(100);
sun->setZOrder(50);
zombie->setZOrder(0);
return true;
}

Z轴的数值越大,那么代表对应的对象越处在上面。如上述代码所示,默认的Z轴值是递增的,越晚插入父节点的子节点,它就越处在上面。当然这里主要是手动设置,利用方法setZOrder()便能够更改对象的Z轴值。