ページ 11

表示座標とマップ座標

Posted: 2014年3月02日(日) 14:03
by heyman
http://dixq.net/forum/viewtopic.php?f=3 ... 90#p117090 の続きです
まず最初に理解力がなくて本当にすいません。
以前質問させてもらった時に、表示座標とッマップ座標というのが出てきて、
理解できたような気になってしまって、解決とさせていただいたんですけど、
いざプログラムに書き込もうとしたら、どうすればいいかわからくなってしまったので、
再び質問させていただきました。
非常に申し訳ないのですが、どなたか解説お願いします。

Re: 表示座標とマップ座標

Posted: 2014年3月02日(日) 14:57
by softya(ソフト屋)
scroll.png
scroll.png (6.76 KiB) 閲覧数: 1485 回
さっきの図に、マップ座標と表示座標を書き加えました。
オレンジがマップ座標で、表示座標が紫です。
マップ座標はマップ左上からのドット相対座標で、表示座標は表示している領域の左上からのドット相対座標となります。
Playerしか書きませんが、Enemyも同様に計算されます。
int player_viewx = player.mapx - map.scrx;
int player_viewy = player.mapy - map.scry;
このplayer_viewxとplayer_viewyでDrawGraphします。
この時Draw関数内でしかmap.scrxやmap.scryを使った計算をしないようにすることで表示座標を扱う部分が極小化するためバグを発生しづらくなります。デバッグも容易です。
それ以外の当たり判定や移動では、player.mapx とplayer.mapy しか使いません。

Re: 表示座標とマップ座標

Posted: 2014年3月02日(日) 16:38
by heyman
なるほどやっと理解できました。
おかけでプログラムが見やすくなりました。
助かりました。