0

我正在创建一个格斗游戏。我有一个英雄的精灵表和一个怪物的精灵表。由于两者都可以进行多次攻击,因此我想避免将它们合并到一个 spritesheet 中。我打算创造更多的角色。

现在我为每个 spritesheet 创建一个 SpriteBatchNode 并将它们添加到图层。

CCLayer* stage = CCLayer::create();
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("character_hero.plist");
this->characterHeroBatchNode = CCSpriteBatchNode::create("character_hero.pvr.ccz");

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("character_monster.plist");
this->characterMonsterBatchNode = CCSpriteBatchNode::create("character_monster.pvr.ccz");

stage->addChild(characterHeroBatchNode);
stage->addChild(characterMonsterBatchNode);

现在我有一个 sprite incharacterHeroBatchNode和多个 in characterMonsterBatchNode

如何根据 PositionY 属性对怪物和英雄 z-Order 重新排序。

例如>

monster1->setPositionY(10); // In monster batch node
hero->setPositionY(24); // In hero batch node
monster2->setPositionY(43); // In monster batch node

我想要英雄背后的怪物1。还有monster2背后的英雄。

4

2 回答 2

1

过去,我必须创建一些游戏,其中我想要一些精灵在前台,而另一些在后台。精灵在不同的表中,就像你有它们一样。

为了让它们按我想要的顺序排列,我将“前”精灵放入一个 CCLayer,将“后”精灵放入另一个 CCLayer。我按照我希望它们出现的顺序将图层添加到场景中。我还操纵了每个相应的图层,使它们根据需要淡入/淡出。所以你可以让英雄出现在场景中,然后让敌人出现在他身后。

如果要混搭,可以有3层,一层为“中间”,一层为“前”,一层为“后”,并在层之间动态移动精灵。

这是你要找的吗?

于 2013-12-14T00:17:55.913 回答
1

如果我明白你在问什么,答案是,你不能。将每个CCSpriteBatchNode视为自己的容器。您可以调整 中精灵的 Z 顺序CCSpriteBatchNode,但是当您将批次添加到CCLayer整体时,将按照您添加的任何 Z 顺序CCSpriteBatchNode应用到CCLayer。所以为了做你想做的事,你需要另一批怪物。或者以你想要的方式使用CCSprites和添加/调整它们CCLayer,但你显然会失去CCSpriteBatchNode好处。

于 2013-12-12T21:27:48.563 回答