ステージ背景を制御したい ~レイヤーの生成と操作~
ゆっくりマインカート解説記事 三回目。
今回は背景レイヤーの生成とスクロールについてです。
GameMakerのプログラム的な話が続くので興味のある方だけどうぞ!
プレイ画面へはこちらから!
ゆっくりマインカート(ニコニコアツマール)
ゆっくりマインカートの記事のまとめはこちら
ゆっくりマインカートまとめページ(Cien)
やりたい事と条件
- スクロールする背景はリピート表示する
- 複数枚の背景レイヤーをスクロールする
- 奥行き感を出す為に、レイヤー毎のスクロール速度を変化させる
- トロッコがミスした時、ステージを一定距離戻る事に対応する
- 紅魔館や鳥居など、一度しか出現しない背景もある
ステージ1の背景はこの3枚の画像を重ねている
鳥居や手水舎は一回しか表示しません
単純にスクロールを行いたい場合は
BackgroundレイヤーのHorizontalSpeedを設定すればいいんですが、
その場合はスタート直前・ゴール直後のカメラが移動していないタイミングや
ミスしてトロッコが後に戻るタイミングでもスクロールして不自然になるので
カメラオブジェクトの位置を参照しながらスクロールするようにしました。
プログラムの簡単な説明
初期化生成
背景レイヤーには1枚につき4つの情報を設定します。
- 画像データ
- 繰り返し背景かどうか
- スクロール相対速度
- オフセット(背景をずらして表示する位置)
これらの設定情報を参照しながらレイヤーを作成します。
ゲーム中の背景のスクロール
今回はトロッコに追従するカメラのx位置を使いました。
毎ステップ、カメラの位置を参考にレイヤーのx位置を再計算することで
スクロールを実現しています。
具体的には(カメラのx位置)×(スクロール相対速度)+(オフセット)
という計算式です。
感想
今回こんなスクロール方法を考えましたが、
ミスした時だけBackgroundレイヤーのHorizontalSpeedをいじって、
復帰時に元に戻すという方法でもよかったかなと思います。
今度似たようなことをするときに試してみたいと思います。
今回はこんな感じです。
GameMakerの参考になれば幸いです。
ありがとうございました!
フォロワー以上限定無料
ゆっくりマインカートの背景の生成と制御のプログラムコードを記載しています
無料