2013-12-12 38 views
0

我正在創建一個格鬥遊戲。我有一張英雄的精靈畫面和一張怪物的精靈畫面。既然兩者都能夠進行多次攻擊,我想避免將它們合併到一張spritesheet中。我打算創造更多的角色。cocos2d,重新排列不同批次節點中的孩子

現在我爲每個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

如何根據他們的PositionY屬性重新排序怪物和英雄z順序。

例如>

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

我想怪物1幕後英雄。和怪物背後的英雄2。

回答

1

過去,我不得不在遊戲中創建前景中的某些精靈和後臺中的其他人。精靈在不同的牀單上,就像你擁有它們一樣。

爲了讓它們按照我想要的順序排列,我將「前」精靈放入一個CCLayer中,「後退」精靈放入另一個CCLayer中。我按照我希望它們出現的順序將這些圖層添加到場景中。我還操縱了每個相應的圖層,以根據需要淡入/淡出。所以你可以在場景中擁有英雄,然後讓敵人出現在他身後。

如果你想混合搭配,你可以有3層,一層爲「中層」,一層爲「前」,一層爲「後」,並動態移動層之間的精靈。

這就是您要找的內容?

+0

感謝您的建議。我會牢記在心。我還不確定2 Spritesheets是否足夠。但我會以某種方式採納它。 – Xazen

1

如果我明白你在問什麼,答案是,你不能。考慮每個CCSpriteBatchNode是自己的容器。您可以調整CCSpriteBatchNode內部精靈的Z順序,但是當您將該批次添加到CCLayer時,整個將以您添加的任何Z順序應用於CCLayer。所以爲了做你想做的事情,你需要另一批怪物。或者使用CCSprites並以您想要的方式在CCLayer上添加/調整它們,但顯然會失去CCSpriteBatchNode的好處。

+0

既然NonlinearIdeas發佈了一個更適合我的案例,我接受了他的回答。但感謝您的快速回復! – Xazen