画面スクロールです。これがあれば一気に世界が広がります。
でも実装は簡単です。表示する全てのオブジェクトの位置を、自キャラの位置を中心にして変換すれば良いだけです。
具体的には、オブジェクトの座標値から自キャラChara[0]の座標値を引くと自キャラからの相対座標が出るので、それを画面の中心(今回はX320,Y240)だけ移動させればおしまいです。
以下のプログラムでは、さらに画面の端ではスクロールしないようにしています。
スクロール範囲に固定値を入れてるので、後で修正が必要ですね。他にはスクロールして見えないところの描画のクリッピングや、当たり判定の省略なんかも考えないと。でも今時のPCならマシンパワーで押し切れるかなw
次回はやり忘れてたゲームモードクラスCGameModeの設計です。
//-----------------------------------------------------------------------------
// 座標をスクロール後に変換
void CCharaManage::Scroll(float before_x, float before_y, float *after_x, float *after_y)
{
float my_x, my_y;
// 自キャラの位置
my_x=Chara[0]->mx;
if (my_x<320) {
my_x=320;
}
if (my_x>(6400-320)) {
my_x=6400-320;
}
my_y=240;
// 相対位置に変換
*after_x=before_x-my_x+320;
*after_y=before_y-my_y+240;
}

