背景スクロール
概要
背景スクロールはシューティングゲームなどで使用される演出方法の1つです。 キャラクターなどは画面上の座標から変化しませんが、背景がスクロールするので、 ユーザーはステージが移動しているように感じさせることができます。 背景スクロールの方法は色々ありますが、今回は「同じ背景を並べる」 「UVスクロール」の方法の説明したいと思います。 ※画面サイズを超える空間(ステージ等)をスクロールするやり方については 画面スクロールで説明していますので、そちらをご覧ください。
サンプル
サンプルはここからダウンロードでき、環境については以下の内容となっています。
VSのバージョン | DirectXのバージョン |
---|---|
VisualStudio 2019 | DirectX9 |
同じ背景を複数用意
同じ背景を複数用意する方法は、同じ背景を2~3枚用意して それをスクロールする軸に並べます。 この背景を描画する範囲がありますが、この範囲は並べた背景すべてを 描画するわけではなく、一部のみを描画します。 この状態で背景全体を毎フレーム移動させると画面をスクロールできます。 スクロールが進むと描画範囲を超えてしまう背景が出てくるので、 その背景は並んでいる背景の末端に移動させます。
末端移動条件
背景を末端に移動させる条件は「描画範囲に入っていないかつ、描画範囲の先にある」です。 上の絵の場合に末端移動条件に当てはまっているのは①の背景です。 このような描画範囲に外にあり、描画範囲の先にある背景を末端に移動させます。 移動量は「背景の進行方向軸のサイズ * 並べている背景の枚数」です。
UVスクロール
UVスクロールを使った方法はテクスチャのUV値に対して加算を行い、 テクスチャをスクロールさせます。 背景を並べる方法と比べると、描画する枚数が1枚で済んだり、 末端に移動させる処理がないので、非常に楽に実装できます。 UVスクロールの注意点としてサンプラの設定があります。 必ず「ワープ」の設定にしてください。
遠近感
背景の遠近感をより出したい場合は、距離感の違う背景を用意します。 この距離感の違う背景をスクロールさせますが、 速度は「遠距離の背景は遅く、近距離の背景は速く」します。 これによって背景の動きが自分達が日ごろ見ている映像に近づくので、 1枚の背景でスクロールするよりも遠近感が出すことができます。