Cocos2d x cocos2d,对不同批处理节点中的子节点重新排序

Cocos2d x cocos2d,对不同批处理节点中的子节点重新排序,cocos2d-x,ccspritebatchnode,Cocos2d X,Ccspritebatchnode,我正在制作一个格斗游戏。我有一张给英雄的精灵纸和一张给怪物的精灵纸。由于两者都可以进行多次攻击,我希望避免将它们合并到一个精灵表中。我打算创造更多的角色 现在,我正在为每个spritesheet创建一个SpriteBatchNode,并将它们添加到图层中 CCLayer* stage = CCLayer::create(); CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("character_he

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

现在,我正在为每个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);
现在我在
characterHeroBatchNode
中有一个精灵,在
characterMonsterBatchNode
中有多个精灵

我如何根据怪物和英雄的位置属性重新排列他们的z顺序

例如>

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

我要英雄身后的怪物1。还有《怪物2》背后的英雄。

如果我理解你的要求,答案是,你不能。考虑每个<代码> CCSpriteBatchNode <代码>作为它自己的容器。您可以调整
CCSpriteBatchNode
内精灵的Z顺序,但是当您将批次添加到
CCLayer
时,整个
CCSpriteBatchNode
将以您添加的任何Z顺序应用到
CCLayer
。所以为了做你想做的事,你需要另一批怪物。或者使用
CCSprites
并在
CCLayer
上以您想要的方式添加/调整它们,但显然会失去
CCSpriteBatchNode
的好处

在过去,我必须创建一些游戏,其中我希望一些精灵出现在前台,另一些出现在后台。精灵在不同的床单上,就像你有它们一样

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

如果你想混合和匹配,你可以有3层,一层为“中间地带”,一层为“正面”,一层为“背面”,并在层之间动态移动精灵


这就是你要找的吗?

既然非线性因素提出了一个建议,对我来说效果更好,我接受了他的回答。但是谢谢你的快速回复!谢谢你的建议。我会记住的。我还不确定两张精灵表是否足够。但我会以某种方式采纳它。