表題の件、現在製作しているSTGでは、
背景 -> 敵 -> 自機 -> エフェクト -> 敵弾 -> スコアフレーム
奥 - - - - - > 前面
の順に描画しているのですが、今考えている演出で、
敵が前面から登場し自機の上(重なったときに自機が隠れる)を通らせたいと考えているのですが、
なかなか良い方法が思いつきません。
敵はクラスの配列で管理しています。
現在はこんな感じの描画方法です。(イメージ)
C_Enemy Zako[ 100 ]; //敵クラス
C_Player Player; //自機クラス
//描画
Zako.DrawProcess(); //全ての敵を先に描画
Plauer.DrawProcess(); //敵の上に自機が描画される
レイヤー分けをして描画しようと考えました。
メンバー変数にレイヤーを記憶する変数を追加し
//描画
for( int i=0 ; i<10 ; i++ ){
Zako.DrawProcess( i ); //引数で指定されたレイヤーのみを表示
Plauer.DrawProcess( i );
}
void C_Enemy::DrawProcess( int layer ){
for( int i=0 ; i<ENEMY_MAX ; i++ ){
//敵オブジェクトのレイヤーと引数がおなじなら描画
if( layer == m_Layer ){
Draw(); //敵を描画
}
}
}
空のループを何回も回す場合も出てくるので、必要最低限のループで描画できるとベストなのですが・・・
STLのmapでソートするのも考えましたが、
毎フレーム、ソートするととても処理が間に合わなかったので;;
何かアドバイスを下さると幸いです。
開発環境は、
Windows 7 Ultimate SP1 64bit
Visual C++ 2010
DXライブラリ