レイヤーをつかったプレイヤーの描画

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
名無しのプログラマ

レイヤーをつかったプレイヤーの描画

#1

投稿記事 by 名無しのプログラマ » 15年前

こちらの掲示板はいつも参考にさせていただいております。

現在製作中のRPGのユニット描画処理で、悩んでいる事があります。

1、ベースとなるマップの描画(32x32)
2、プレイヤー画像の描画(32x64)
3、NPCなどのオブジェクトの描画(32x64)
4、重なるレイヤー2マップの描画(32x32)
※ カッコ内は画像サイズです。

上記の順にデータを描画し、表示する関数を作製したのですが、
1と4は2と3を描画する前、描画した後に描画すればいいのですが、
肝心のユニット描画で、forのなかにforを利用するというn~nのような状態になってしまいます。

// ベースマップの描画


// ユニットをX,Yの小さいほうから描画
// (PLAYERを描画後、NPCを描画すると、PLAYERのサイズ上、頭にかさなってしまうため)
for(int i = 0; i < MapSizeY; i ++)
{
for(int j = 0; j < MapSizeX; j ++)
{
// Playerの座標XとYが描画位置と等しいものを描画
for(int idx = 0; idx < PlayerCount; idx ++)
{
if(Player[idx]->GetPosX() == j && Player[idx]->GetPosY() == i) DrawPlayer(idx);
}

// Npcの座標XとYが描画位置と等しいものを描画
for(int idx = 0; idx < NpcCount; idx ++)
{
if(Npc[idx]->GetPosX() == j && Npc[idx]->GetPosY() == i) DrawNpc(idx);
}

~以下同様の処理~
}
}

// レイヤー2マップの描画



これでも問題なくうごくのですが、どうにもふに落ちません。
ユニット専用の配列データ(UnitDataMap[MapSizeY][MapSizeX])に
ユニットのタイプ(Player,Npc,etc...)と管理番号を保持して描画など考えて見ましたが、
ユニット同士がかさなる場合があるため、可能であれば他の手法をとりたいです。

もっと効率的な方法などありましたら、教えていただけないでしょうか。

よろしくおねがいします。

名無しのプログラマ

Re:レイヤーをつかったプレイヤーの描画

#2

投稿記事 by 名無しのプログラマ » 15年前

>>ユニット専用の配列データ(UnitDataMap[MapSizeY][MapSizeX])に
ここにユニットの数と複数データを保有できるようにすればいけるかもしれませんでした・・・。

ただ、せっかくなので皆さんの使用している方法があれば聞いてみたいです。

Justy

Re:レイヤーをつかったプレイヤーの描画

#3

投稿記事 by Justy » 15年前

PlayerCount個分の int型を格納できる配列やコンテナに表示する順にソートしたインデックス番号を格納し、
for文で DrawPlayer(indTbl) なかんじで表示、ってところでしょうか。

閉鎖

“C言語何でも質問掲示板” へ戻る