あまぐもホルン 2022/05/02 18:00

ステージ背景を制御したい ~レイヤーの生成と操作~

ゆっくりマインカート解説記事 三回目。
今回は背景レイヤーの生成とスクロールについてです。
GameMakerのプログラム的な話が続くので興味のある方だけどうぞ!


プレイ画面へはこちらから!
ゆっくりマインカート(ニコニコアツマール)


ゆっくりマインカートの記事のまとめはこちら
ゆっくりマインカートまとめページ(Cien)


やりたい事と条件

  • スクロールする背景はリピート表示する
  • 複数枚の背景レイヤーをスクロールする
  • 奥行き感を出す為に、レイヤー毎のスクロール速度を変化させる
  • トロッコがミスした時、ステージを一定距離戻る事に対応する
  • 紅魔館や鳥居など、一度しか出現しない背景もある


ステージ1の背景はこの3枚の画像を重ねている


鳥居や手水舎は一回しか表示しません

単純にスクロールを行いたい場合は
BackgroundレイヤーのHorizontalSpeedを設定すればいいんですが、
その場合はスタート直前・ゴール直後のカメラが移動していないタイミング
ミスしてトロッコが後に戻るタイミングでもスクロールして不自然になるので
カメラオブジェクトの位置を参照しながらスクロールするようにしました。

プログラムの簡単な説明

初期化生成

背景レイヤーには1枚につき4つの情報を設定します。

  • 画像データ
  • 繰り返し背景かどうか
  • スクロール相対速度
  • オフセット(背景をずらして表示する位置)

これらの設定情報を参照しながらレイヤーを作成します。

ゲーム中の背景のスクロール

今回はトロッコに追従するカメラのx位置を使いました。
毎ステップ、カメラの位置を参考にレイヤーのx位置を再計算することで
スクロールを実現しています。
具体的には(カメラのx位置)×(スクロール相対速度)+(オフセット)
という計算式です。

感想

今回こんなスクロール方法を考えましたが、
ミスした時だけBackgroundレイヤーのHorizontalSpeedをいじって、
復帰時に元に戻すという方法でもよかったかなと思います。
今度似たようなことをするときに試してみたいと思います。


今回はこんな感じです。
GameMakerの参考になれば幸いです。
ありがとうございました!

フォロワー以上限定無料

ゆっくりマインカートの背景の生成と制御のプログラムコードを記載しています

無料

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索