以前の質問した時には、スクロールは連続的なのに対し、キャラクターの移動は離散的であるところまでできたのですが、連続的に移動させると描画順位が狂ってしまっていました。
当時は離散的な描画でもよかったのですが、今現在作っているクォータービューのパズルアクションではアクション性が出てきたので、タクティクスオウガなどのクォータービューのゲームのようにキャラクターが移動中の描画をしても描画順位が狂わないようにしたいのです。
今の描画方法ですと、どう頑張っても離散的にしかならなさそうなのでアドバイスをお願いします。
今現在のマップとキャラクターの描画部分を載せておきます。また、表示するマップデータと読み込み部分を添付しました。
#define MAPSIZEMAX_X 32//マップの広さX #define MAPSIZEMAX_Y 32//マップの広さY void dataDraw( void ) { //int i, f ;//i:キャラの数,x:forループx座標,y:forループy座標,f:マップの段数 int px, py ;//描画座標 int hx = 288; int hy = 64;//初期描画位置の補正 for(int y = 0; y < MAPSIZEMAX_Y; y++ ){ for(int x = 0; x < MAPSIZEMAX_X; x++ ) { px = hx-(y*32)+(x*32) + scroll_X(99); py = hy+(y*16)+(x*16) + scroll_Y(99/*適当な値を入れている*/); if(mapData.field[y][x] != -1){//マップデータがNULLでなければ for(int f = 0;( f < mapData.fieldHigh[y][x] || mapData.fieldHigh[y][x] == 99); f++ ){ //高さ分積む(処理落ちしているので中身を空洞に) //マップチップを並べる if(px <= 600 + 64 && px >= 0 - 64 && py <= 600 + 48 && py >= 0 - 48){//描画領域内のみ描画 if(f == mapData.fieldHigh[y][x] - 1){//高さ以外の部分を空洞にする DrawGraph( px, py-f*16, dat.Pic.MapChip[ mapData.field[y][x] ], TRUE );//マップチップの描画 } } //障害物を描画 if(mapData.hurdle[y][x] != 0){ DrawGraph( px, py-mapData.fieldHigh[y][x]*16, dat.Pic.MapObject[ mapData.hurdle[y][x]/*iaMap[y][x]*//*f%4*/ ], TRUE ); } for(int i = 0; i < CHARAMAX; i++ ){ if(NPC.alive[y][x] == true){ NPCDraw(px ,py -48 , mapData.fieldHigh[y][x] - 1 , x ,y , NPCData.rank , i); //NPCの描画 } if(enemyData.alive == true && enemyData.true_X/16 == x && enemyData.true_Y/16 == y){//敵を描画 enemyDraw(px ,py -48 , mapData.fieldHigh[y][x] - 1 , x ,y , enemyData.rank , i); } if( ch[playe[/url].true_X/16 == x && ch[playe[/url].true_Y/16 == y ){ charaDrawMain(px , py -48 , mapData.fieldHigh[y][x] -1 , i , ch.type );//プレイヤーを描画 } } } } } }