画面スクロールです。これがあれば一気に世界が広がります。
でも実装は簡単です。表示する全てのオブジェクトの位置を、自キャラの位置を中心にして変換すれば良いだけです。
具体的には、オブジェクトの座標値から自キャラ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; }