表示座標とマップ座標

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
heyman
記事: 99
登録日時: 10年前

表示座標とマップ座標

#1

投稿記事 by heyman » 10年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 10年前

scroll.png
scroll.png (6.76 KiB) 閲覧数: 1163 回
さっきの図に、マップ座標と表示座標を書き加えました。
オレンジがマップ座標で、表示座標が紫です。
マップ座標はマップ左上からのドット相対座標で、表示座標は表示している領域の左上からのドット相対座標となります。
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 しか使いません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

heyman
記事: 99
登録日時: 10年前

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

#3

投稿記事 by heyman » 10年前

なるほどやっと理解できました。
おかけでプログラムが見やすくなりました。
助かりました。

閉鎖

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