ゲーム開発18:画面スクロール

画面スクロールです。これがあれば一気に世界が広がります。

でも実装は簡単です。表示する全てのオブジェクトの位置を、自キャラの位置を中心にして変換すれば良いだけです。

具体的には、オブジェクトの座標値から自キャラ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;
}

コメントを残す

メールアドレスが公開されることはありません。