ゲームで使える背景の横スクロールテクニック

 

スクラッチでゲームを作る時に、メインキャラのスプライトはあまり動かさずに、周りのスプライトを動かすことで背景が動いているように見せる方法があります。
メインキャラの動きに合わせて背景が動くことをスクロールといいます。

ゲームのスクロールには縦に動くものと、横に動くものがありますが、
今回は横のスクロールについて説明をしますね。

小さいスプライトを使ったスクロールテクニック

まずは、一番簡単なスクロールの方法です。

下の画像のように、背景となるビルや敵キャラを左側に動かして、メインキャラのトリが右方向に動いているように見せるテクニックです。

横スクロール画像

 

ビルと敵のキャラは、1~6までのコスチュームをもつ一つのスプライトとして用意しています。
そしてビルと敵キャラは、画面の右端(X座標=240)に表示されて左端までX座標を-5ずつ変えています。

横スクロール画面説明

ビルと敵キャラのスクリプトは次のとおりです。

横スクロールのスクリプト画像

ビルや木などのスプライトを動かす時のポイント

ビルと敵キャラの出現する右端のX座標は240ちょうど(X=240 )でOK 

でも、左端のX座標は X座標=-240ではなくX座標<-239 のようにする

  • 等号(=)ではなく、不等号(>または<)を使う  => 移動しているスプライトがX座標=○○を通過するのは一瞬で、通り過ぎることが多い。 通り過ぎても大丈夫なようにX座標<○○を使う
  • 数字は-240より大きい数字(-239以上)にする  => スプライトの中心が-240まで移動しない事があるので、スプライトが確実に移動する座標を決めてあげる必要があります

背景と同じ大きさのスプライトを繰り返して使うテクニック

1つのスプライトをクローンして使う方法

この方法は背景となる絵柄が、水玉やボーダーラインのように同じ模様が繰り返される場合に使うことができます。

1枚目と2枚目の背景のつなぎ目がキレイにつながるようにする工夫が必要となり、それを上手にできるかがポイントとなります。

1画面背景のスクロール画像

1枚目と2枚目のつなぎ目が上手につながっているかがわかるように、立方体の幾何学模様を使ってみました。

生徒さんA生徒さんA

こんなの背景には使わないよ

そら先生そら先生

。。。

1画面のX座標が0の時に、2画面のX座標を480にすると模様が上手くつながらないですよね。(下図の上の方)

模様が上手くつながる時(下図の下)のX座標は、この場合413でした。

背景の1枚目と2枚目をつなぐ画像

生徒さんB生徒さんB

模様の繋がりがわかりやすいから、良いんじゃない

1つのスプライトだけで背景スクロールを作る時のポイント

オリジナルのスプライトは、スタート時に画面の真ん中にセット(X=0 ,Y=0)

オリジナルスプライトを真ん中にセットした時点で、自分自身のクローンを作って2枚目の背景をX座標=480付近にセット(模様が上手につながるように座標を変えながら試してください

オリジナルとクローンのスプライトは、画面の左端から消える(ここではX座標<-460)まで繰り返し左側に移動させる。(-465以下の座標までスプライトが移動しなかったため-460を使用)

クローンのスプライトがX座標=0 に移動してきたら、3画面目のクローンを作る (X座標=0がターゲットですが、0を通り過ぎてしまうのでX座標<0とします)

オリジナルのスプライトは、-460より左側に移動したら隠して見えなくする。このあとは、クローンだけでスクロールする背景をつくる。

 

”旗が押されたとき”に最初に画面に出てくるのはオリジナルのスプライト。
その右側(X座標=413)にクローンのスプライトが用意されるようにします。(ここのX座標=413は決まった位置ではないので、自分で調整してください)

3画面からクローンのクローンを作ることをずっと繰り返します。

スクロールの座標説明図

ここで作成したスクロールのスクリプトは次のとおりです。

クローンを繰り返すスクリプト画像

スクリプトの説明

旗が押されたときのブロック:オリジナルのスプライトが画面中央に表示され(最初の1画面)た時にクローンを作成し、X座標が-460を過ぎるまで移動していくスクリプト

クローンされたときのブロック:クローンが画面外の右(X座標=413)にセットされてから左に移動、画面中央に来た時に自分のクローンを作成する。 X座標が-460を過ぎたらクローン削除。2画面からはずっとこのブロックでクローンのスプライトを表示し続けては削除するを繰り返します。

2つのスプライトを繰り返し使う方法

今度は2つのスプライトを背景として繋げて動かすことで、背景が動いているように見せる方法です。

 

スプライトを2つ使った背景の図

2つのスプライトが背景としてつながっている様にみせるために、一つ目の背景とするスプライトを反転させて背景2として保存します。

一つのスプライトを反転して別のスプライトとして使う説明

2つのスプライトで背景スクロールを作るポイント

ステージにあるスプライトを使うときは、コスチュームの画面でスプライトをコピー(塗りつぶしとゴミ箱の間のアイコン)してして新しいスプライトの画面で貼り付けます。

2つのスプライトをつなげる必要があるので、ひとつ目のスプライトを反転してふたつ目のスプライトとして使うようにします。

セットするX座標は背景1をX座標=0とし、背景2はX座標=480とすれば良いです。(これでつなぎ目がずれる時はコスチュームが真ん中にあるかを確認してください

2つのスプライトを背景とする図

背景1と2のスクリプトは次の通り。

そら先生そら先生

どちらのスクリプトが背景1で、背景2はどっちかわかるよね

背景1のスクリプト
背景2のスクリプト
生徒さんB生徒さんB

この方法の方が、1つのスプライトを使うより簡単そう

 

背景となるスプライトを必要な数だけ作る時のテクニック

横スクロールのアクションゲームでいろいろなステージを作り出すのはとても大変ですが、
ベースになる地面障害物のスプライトステージ数で管理するのが良いと思います。

複数の背景をスクロールとしてつかう例

まずは、ベースになるスプライトをコスチュームとしてコピーして作成します。
長さを色々と変えてみましたが、特に違いはありません。

背景のスプライト作成図

 

背景の番号をステージという名前の変数で表します。
ステージ数=1の時に、それぞれの障害物のコスチュームは1とします。(ステージ=2の時は、すべてのコスチューム=2)

ステージで障害物を管理する図

背景を楽にするポイント

地面のスプライト、障害物のトゲトゲのスプライト、他のスプライト(マグマの池、はしご、など)を別々に作成して、同じ画面に表示したいステージ番号と同じコスチューム番号にする

出現させたくないスプライトは、コスチュームを空っぽにしておくと何も表示されない

ステージという変数を作って、ステージの番号をコスチューム番号として使用する => 使いたいスプライトのコスチュームを使いたいステージに出現させることができる

地面やトゲトゲなどのスクリプトはたったこれだけ

コスチュームをステージ番号と一緒にするスクリプト

障害物の位置をどこにするかは、下の説明を見てください

 

障害物となるスプライトは、画面を見ながらどこに設置するかを決めよう。

障害物のセットの方法

最後に背景を変える方法と、ネコの位置を変える方法ですが、とっても簡単です。

ネコのスクリプトとステージ変更の説明