背景スクロール


概要

背景スクロールはシューティングゲームなどで使用される演出方法の1つです。
キャラクターなどは画面上の座標から変化しませんが、背景がスクロールするので、
ユーザーはステージが移動しているように感じさせることができます。

2d_game_0001

背景スクロールの方法は色々ありますが、今回は「同じ背景を並べる」
「UVスクロール」の方法の説明したいと思います。

※画面サイズを超える空間(ステージ等)をスクロールするやり方については
 画面スクロールで説明していますので、そちらをご覧ください。

サンプル

サンプルはここからダウンロードでき、環境については以下の内容となっています。

開発環境
VSのバージョン DirectXのバージョン
VisualStudio 2019 DirectX9

同じ背景を複数用意

同じ背景を複数用意する方法は、同じ背景を2~3枚用意して
それをスクロールする軸に並べます。

2d_game_0002

この背景を描画する範囲がありますが、この範囲は並べた背景すべてを
描画するわけではなく、一部のみを描画します。

2d_game_0003

この状態で背景全体を毎フレーム移動させると画面をスクロールできます。

2d_game_0004

スクロールが進むと描画範囲を超えてしまう背景が出てくるので、
その背景は並んでいる背景の末端に移動させます。

2d_game_0005

末端移動条件

背景を末端に移動させる条件は「描画範囲に入っていないかつ、描画範囲の先にある」です。

2d_game_0006

上の絵の場合に末端移動条件に当てはまっているのは①の背景です。
このような描画範囲に外にあり、描画範囲の先にある背景を末端に移動させます。
移動量は「背景の進行方向軸のサイズ * 並べている背景の枚数」です。

UVスクロール

UVスクロールを使った方法はテクスチャのUV値に対して加算を行い、
テクスチャをスクロールさせます。
背景を並べる方法と比べると、描画する枚数が1枚で済んだり、
末端に移動させる処理がないので、非常に楽に実装できます。

2d_game_0007

UVスクロールの注意点としてサンプラの設定があります。
必ず「ワープ」の設定にしてください。

遠近感

背景の遠近感をより出したい場合は、距離感の違う背景を用意します。

2d_game_0008

この距離感の違う背景をスクロールさせますが、
速度は「遠距離の背景は遅く、近距離の背景は速く」します。

2d_game_0009

これによって背景の動きが自分達が日ごろ見ている映像に近づくので、
1枚の背景でスクロールするよりも遠近感が出すことができます。