0

格闘ゲームを作っています。ヒーロー用のスプライトシートとモンスター用のスプライトシートがあります。両方とも複数の攻撃を行うことができるため、それらを 1 つのスプライトシートにマージすることは避けたいと思います。そして、より多くのキャラクターを作成するつもりです。

今、各スプライトシートの 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);

これで、 に 1 つのスプライト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の主人公。

4

2 に答える 2

1

以前は、いくつかのスプライトをフォアグラウンドに、他のスプライトをバックグラウンドに配置するゲームを作成する必要がありました。あなたが持っているように、スプライトは別のシートにありました。

必要な順序でそれらを取得するために、「フロント」スプライトを 1 つの CCLayer に配置し、「バック」スプライトを別の CCLayer に配置しました。表示したい順序でレイヤーをシーンに追加しました。また、それぞれのレイヤーを操作して、必要に応じてフェードイン/フェードアウトさせました。そのため、シーンにヒーローがいて、その後ろに敵が現れるようにすることができます。

組み合わせて使いたい場合は、「中間」、「前面」、「背面」の 3 つのレイヤーを作成し、レイヤー間でスプライトを動的に移動させることができます。

これはあなたが探していたものでしたか?

于 2013-12-14T00:17:55.913 に答える