テクスチャ無しなので2次元の正方形を合わせれば良いだろうと思い、四角形を描画しようとしたのですが、描画順の関係で奥のマップが手前のマップよりも前に描画されてしまっておかしなことになってしまいました。
そこで、以下のように描画順を配列に格納して描画しようと思いました。
P = プレイヤー
06,05,04
07, P,03
00,01,02
(0から描画される
此れを実現させる為に、以下のようなコードを作りました。
(描画されるマップは主人公から5マス半径。) 「GetPlayerBlockPosition何たら」はプレイヤーのブロック座標を返す関数です。
POS DrawNum[121];
POS spos = {Getter_PlayerBlockPositionX()-5,Getter_PlayerBlockPositionZ()-5};//四角の左下を取得
POS opos = spos;//最初の四角の左下の位置
int border_max = 10;//四角の枠線の最大個数
int sq = 0;//四角の走査している場所
int i = 0;//ループカウンタ
//中央を代入
DrawNum[120].x = spos.x+5;
DrawNum[120].z = spos.z+5;
for(i = 0;i<120;i++){
//枠線の中で進んだマスをえる為に引くときの数。
int minus_value_x = opos.x+(10-border_max);
int minus_value_z = opos.z+(10-border_max);
DrawNum[i] = spos;
switch(sq){
case 0 ://右へ
if(spos.x-minus_value_x>=border_max){
sq++;
i--;
}else spos.x++;
break;
case 1 ://上へ
if(spos.z-minus_value_z>=border_max){
sq++;
i--;
}else spos.z++;
break;
case 2 ://左へ
if(spos.x-minus_value_x<=0){
sq++;
i--;
}else spos.x--;
break;
case 3 ://下へ
if(spos.z-minus_value_z<=0){
sq=0;
border_max--;
i-=2;
}else spos.z--;
break;
};
}
早速このコードを実行したのですが、最初の方は順調だったのですが、四角を一周したあたりから値がおかしくなってきます。
ゲームのマップ描画に使ってもチェック柄?になってしまいます。
3Dゲームでのチップ式マップ描画の方法を教えてください。
よろしくお願いします。