ゲーム製作をする際に、Dxライブラリを使ってプログラムを書いているのですが、
画像を読み込んで表示すると左上が中心座標になります。
なのでキャラクターの画像の当たり判定が実質左上から判定が始まってしまい、
これだと変なところでいきなり衝突判定してしまい、当たるべき部分で判定されないという
現象が起きてしまいます。
その分地点をズラしてあげればこの問題は解決するのですが、
これがどういうプロセスで座標をちゃんと中心にしているのか…
その辺をちゃんと設定できるようにするにはどうすればいいのか、
という理由が今だにわかっていません^^;
龍神録の館の
#define FIELD_MAX_X 384
#define FIELD_MAX_Y 448
#define FIELD_X 32
#define FIELD_Y 16
FIELD_MAX_X, ~Y それぞれキャラクタが動ける領域の広さ
FIELD_X, ~Yはその領域の左上の座標
(32,16)の座標から横に384,縦に448の広さがキャラクタが動ける領域
このあたりの部分が当たり判定に関係しているのかな??
と思い調べてみますがイマイチ理解できていません…
今になって悩んでいます^^;;
今になってで恥ずかしくて聴けない話ですがそれでもこれを知らないと先には進めないので…
Re: 今になってで恥ずかしくて聴けない話ですがそれでもこれを知らないと先には進めないので…
龍神録プログラミングの館では
弾などの画面枠内の描画は
左上を指定するDrawGraphFではなく、
中心を指定するDrawRotaGraphFを使っていますよ。
この関数は画像のサイズに関係なく指定した座標が画像の中心になるように描画します。
さらに画像を拡大縮小、回転して描画することもできます。
graph.cppでは毎回画面枠の位置を考えなくて済むように
DrawRotaGraphFdFという関数を用意しています。
これを使えば指定した座標に枠の始まる位置が足されるので、
画面枠からの座標さえ指定していればOKです。
画面枠左上から見て(x,y)の位置に画像を描画したい場合
DrawRotaGraphF(x+FIELD_X,y+FIELD_Y,...)
とDrawRotaGraphFdF(x,y,...)
が同じ処理になるので引数に+FIELD_Xとか+FIELD_Yとかつけなくて済むのです。
弾などの画面枠内の描画は
左上を指定するDrawGraphFではなく、
中心を指定するDrawRotaGraphFを使っていますよ。
この関数は画像のサイズに関係なく指定した座標が画像の中心になるように描画します。
さらに画像を拡大縮小、回転して描画することもできます。
graph.cppでは毎回画面枠の位置を考えなくて済むように
DrawRotaGraphFdFという関数を用意しています。
これを使えば指定した座標に枠の始まる位置が足されるので、
画面枠からの座標さえ指定していればOKです。
画面枠左上から見て(x,y)の位置に画像を描画したい場合
DrawRotaGraphF(x+FIELD_X,y+FIELD_Y,...)
とDrawRotaGraphFdF(x,y,...)
が同じ処理になるので引数に+FIELD_Xとか+FIELD_Yとかつけなくて済むのです。
Re: 今になってで恥ずかしくて聴けない話ですがそれでもこれを知らないと先には進めないので…
tatuさん
コメントありがとうございます!!
なるほど!DrawGraphとDrawRotaGraphで中心座標が違うのはしりませんでした(汗
たしかDrawRotaGraphFdFは自作された関数だったことは覚えています。
これで謎が解けました!ありがとうございます!!!
コメントありがとうございます!!
なるほど!DrawGraphとDrawRotaGraphで中心座標が違うのはしりませんでした(汗
たしかDrawRotaGraphFdFは自作された関数だったことは覚えています。
これで謎が解けました!ありがとうございます!!!