Contents
現在、youtubeにて「スクラッチで作るアンダーテールサンズ戦」を少しずつ開発してアップしていますが、ある程度機能がまとまって来たので、ブログでも紹介します。
※矢印キーで移動、zで決定、xでキャンセル
作った背景
私が講師をしておりますプログラミング教室では、アンダーテールが好きな小学生がとても多く、みんな色々工夫して作っています。
そのなかでも特に人気があるのが、Gルートのサンズ戦で、これを実現しようとして切磋琢磨していますが、実際にはかなり難しく、途中であきらめてしまう子も多数存在しています。
そこで、
「スクラッチでもここまで作れるんだ!?」「先生スゴイ!!」
と生徒たちに言って欲しく、作ってみる事にしました。
ただ、かなりのボリュームになる事が予想されるのと、そもそもモチベーションが続かない可能性があったので、youtubeで少しずつUPする事になりました。
第1回 画面の枠を作る
まず、画面上うにょうにょ変形する枠から作る事にしました。
ここではペン機能を使って枠を表示しています。
工夫した点はブロック定義を使うことで、さまざまな大きさに対応可能としています。
このように、パラメーターにて幅、高さ、枠開始位置y座標を設定することで、現時点の枠から変形できるようにしました。
ブロック定義は関数のようなものですが、子供たちにはなかなか扱うのが難しく、自発的に使う子はとても少数です。しかし、プログラムを見やすくする機能であるうえ、スクラッチの場合「再描写せずに実行」にチェックを入れることで、描写をショートカットして結果のみ表示する事ができるため、かなり有用性の高い命令です。
この例を使って、現在教室の子供たちにも使ってもらえるようにしています。
第2回 HPの仕組みを作る
枠の次は、HPの表示の仕組みを作りました。
HP(またはMP)もゲームではよく出てくる表現で、子供たちが実現するのに結構悩むポイントでもあります。
スクラッチでは変数をそのまま画面表示させて実現するパターンが多いですが、ここでは本格的に作る事にしました。
HPバーはスプライトのクローンを92本表示させており、変数HPによって、再度クローンを表示させる仕組みとしています。
第3回 コマンド選択ボタン
次に、「たたかう」「こうどう」などのボタン選択の仕組みをつくりました。
これもクローンを使い、ボタンが選択されているかどうかでコスチュームを変えるようにしています。
あと、ボタン選択後も、攻撃対象を選んだり、アイテムを使ったりと多岐にわたるため、現在どこまでコマンドが進んだかを判断するための変数「メニュー操作時インデックス」を用意して、これで処理を制御することにしました。
第4回 メッセージ/アイテム表示を作る
正直ここが一番苦労しました。
まず、文字の表示については、紙芝居のようにスプライトに書いておくのではなく、リストにセットした内容を1文字ずつ読み取ってクローンで表示するようにしています。
これも関数を使って柔軟に表示可能とするようにしました。
このプログラムも他のゲームを作るときに役立つ思うので、子供たちには理解してもらえるよう教えています。
アイテム部分もとても苦労しました。
画面上は3つしかアイテムが表示できませんが、実際には3個以上持つ事が可能なので、ガイドによるスクロールが必要となります。
これを実現するために、表示しているアイテム位置などを変数に格納して作っています。
第5回 攻撃の仕組みをつくる
ここでようやくサンズ(sans)が画面に登場します。
サンズの動きは首、体が微妙に異なる動きをしているのでそれぞれ別のスプライトで作ります。
サンズへの攻撃は基本的に避けるようになっているので、プログラムはとてもシンプルで、攻撃用のメッセージを受け取ると避けるようにしています。
攻撃時の切りつけるアニメーションですが、クローンを使うことで残像っぽくしています。
第6回 攻撃の仕組みをつくる
次はサンズからの攻撃です。
サンズからの攻撃はいろんなパターンが存在しており、まず初回攻撃の叩きつけ&骨攻撃を作りました。
骨の攻撃はそのあとも何度もでてくるので、汎用性のあるようにブロック定義を使って表現しています。
ちなみに、ここで初めてしりましたが、ソウル(プレーヤー)は赤の状態と青の状態があるのですね。
赤の場合、上下左右に自由にうごけますが、青の場合は重力処理がかかるようです。
プレーヤーのプログラムでは「移動モード」という変数で制御しています。
第7回 ガスターブラスター~コマンド選択後攻撃
ここまでくれば、あとは攻撃のフェーズに応じて作っていくだけです。
とにかく本物を参考にしながらゴリゴリ作っていきます。
まとめ
2022年8月末時点ではここまでとなります。
まぁまぁ大変でしたが、おおまかな機能は作れたと思うので、あとは少しずつ追加していくのみとなります。
ガスターブラスターが表示されるあたりで、子供たちは「お~!!」となっていたので、作って良かったなと感じました。
年内には最後まで終わるように作ってyoutubeにアップしていきたいと思います。