【Scratchで簡単なゲーム作成編⑨】オープニング画面・ゲームステージを追加してみる


※ 当ページには【広告/PR】を含む場合があります。
2020/10/25
【Scratchで簡単なゲーム作成編⑧】条件を満たした時のスプライトの進化状態を追加する

今回はステージ画面やシーンの切り替えなどの際に利用する画面遷移のテクニックをプログラムに実装してみます。

画面遷移を取り入れることで、プレイヤーにゲームをより長く楽しんでもらるようになったり、ストーリー性も盛り込めるようになります。

ちなみに、今回の内容での
改造後のサンプルゲームは以下のようになります。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

オープニング画面を作る

これまでは🚩を押してからゲームをスタートしていましたが、今回からゲームの最初の画面であるオープニング画面を作成してみたいと思います。

背景の追加

まずは背景に新しいコスチュームを追加してゲームのタイトルを描きます。

合同会社タコスキングダム|タコキンのPスクール

コスチュームの名前は
スタートとしておきます。

コードも以下のように、
🚩が押されたイベントのブロック部も、新しくステージ1のメッセージを受け取ったときに変更します。

合同会社タコスキングダム|タコキンのPスクール


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

スタートボタンのスプライト

スタート画面にスタートボタンを押してからゲームを開始できるようにしてみます。

新しいスプライトとして、
はじまりという名前でスプライトを作成し、スタートというボタン用のコスチュームを1つ追加します。

合同会社タコスキングダム|タコキンのPスクール

次にゲームをスタートしてから、このスタートボタンを押したときに
ステージ1イベントを送信するようなスクリプトを作ります。

スプライトをクリック方法もいくつかありますが、このスプライトが押されたときブロックを使うのが一番理解しやすいので、ローカル変数スタート?_を使ってループ処理を切り替えながら以下のようにしてみます。

合同会社タコスキングダム|タコキンのPスクール

また、以降の内容でステージを増やす時に利用するグローバル変数
ステージも追加しておきます。このステージを使って、ゲームのステージが今どこあるのかを保持します。

他のスプライトの修正

このスタートボタンを押してゲームが開始されるか試す前に、既に
🚩が押されたときで初期化されていたスプライトを全てステージ1を受け取ったときで初期化するように以下の置き換えを行います。

合同会社タコスキングダム|タコキンのPスクール

またスタート画面を追加したので、それまでは必要でなかった初期化処理を追加しないといけないスプライトもあるので、以下のように最初の画面では隠せるようにしておきます。

合同会社タコスキングダム|タコキンのPスクール

これでスタート画面からゲームが開始できるようになりました。

合同会社タコスキングダム|タコキンのPスクール


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

ステージ画面を変える

では次にゲームのステージを変える機能を追加します。

これも先程のスタート画面を実装したときと同じような理屈で、ステージ1でのゲームクリア条件だったところを、次のステージ2へ遷移するようにすることで可能となります。

なおゲームクリア機能の実装に関しては
前回のここの記事で特集しています。

とりあえず最初は簡単なところで、ステージ2になったら背景だけ変えるようにやってみます。

スコア・スプライト

このゲームでは
スコアスプライトが点数を計算し、画面遷移のイベントをコントロールするようにしていました。ゲームによっても作りかたは様々ですが、イベントを支配する司令塔のようなスプライトを集中的に一つに絞っておくと後々プログラムが拡張しやすいです。

ここでは前回まではゲームのクリア条件であったところを、
ステージ2イベントを送信するように追加しておきます。

合同会社タコスキングダム|タコキンのPスクール

今回はプログラム単純化のため変数
スコアが一旦ゼロリセットしますが、ゲームトータルで総得点を保持したい場合には別の仕組みが必要です。

またこのときにステージも2に変えておきます。

スコアボード・スプライト

スコアボードのスプライト内で、ステージ2が始まったときに、ステージ1で利用していたパラメータを一旦リセットさせます。

以下のように、
ステージ2を受け取ったときイベントでステージ2の初期化を行わせます。

合同会社タコスキングダム|タコキンのPスクール

今回は行いませんが、ステージ2で登場するアイテムなどを一新させるにはもうちょっと工夫が必要になります。

おきばしょ・スプライト

ステージ2が始まった直後は、食べ物置き場に置いていたエサは一旦全て消去しますので、
おきばしょのスプライト内でのステージ2を受け取ったときイベントの初期化は以下のようになります。

合同会社タコスキングダム|タコキンのPスクール

これでステージが切り替わっても、食べ物のコスチュームが次の画面に持ち越されることはありません。

背景

アイテムの選択画面から戻ってくるときに
プレイモードのイベントから背景を選択してきましたが、今回の変更で現在のステージ毎に正しい背景をセットする必要があります。

そこでグローバル変数
ステージを使って、ステージにあった背景を選択するようにします。

合同会社タコスキングダム|タコキンのPスクール

また
🚩が押されたときステージ1ステージ2のイベントで適切に背景が切り替わるようにしています。

他のスプライト

背景を色々と切り替わる種類が増えたことで、
背景の名前背景の番号に依存していたスプライトは影響を受けます。たとえば以下のように、背景の名前で判別していたものは、先程追加した背景でもプログラムが走るように修正します。

合同会社タコスキングダム|タコキンのPスクール

ただし、ステージ数が多くなったり、画面の切り替えが複雑になってきたら、グローバル変数などでステージが今どこにセットされているのかを記録して使う工夫が必要になるかも知れません。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

まとめ

今回は画面遷移の実装手順のポイントに関してまとめてみました。

ステージを遷移させるにはメッセージイベントを上手く利用して、走っているスクリプトを止めたり・開始したりしなければならないため、プログラムが大きければそれだけ大変になってきます。

また、画面ごとの変数や画像などのリソースの管理も複雑になってきますので、慣れないうちは紙のメモ帳やノードブックなどに管理帳として書き留めながらゲーム開発をしてくと良いと思います。