ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

描画位置の計算ミス

障害物を発生させる処理を追加中。
タスクは正しく追加できているのに障害物は描画されるのだが、その前の予告するテクスチャがうまく表示されない。
結局、原因は描画位置が画面外になっていただけだった。今のシステムではオブジェクトの座標はオブジェクトの中心で持っており、描画位置はテクスチャの左上からとなっている。そのため、オブジェクト位置から描画位置を描画するサイズで調整する必要がある。普通はテクスチャサイズの半分を引けば良い。

int texw; // テクスチャ幅
int texh; // テクスチャ高さ
int x,y; // オブジェクト位置

draw( x - texw/2, y - texh/2 );

ところが、今回はテクスチャアニメーションを用いているので描画サイズとテクスチャサイズが一致していない。そのため上の方法では座標がおかしくなってしまう。今回はこれが原因だった。テクスチャサイズを用いるのでなく実際に描画されるサイズを用いないと駄目。

int partsw; // テクスチャアニメの1パーツ幅
int partsh; // テクスチャアニメの1パーツ高さ
int x,y; // オブジェクト位置

draw( x - partsw/2, y - partsh/2 );