【SCRATCH】迷路ゲームの作り方

SCRATCH

Scratchを覚えるには簡単なゲームを作ってみるというのが一つの良い方法だと思います。

今回は、迷路ゲームを作って遊んでみたいと思います。

迷路ゲームの条件

今回は単純ですが、スタートとゴールの間に壁でできた道があり、その道を通ってゴールまでいけるようなゲームにしたいと思います。重要な事項としてはキャラクターがこの壁を通り抜けられないように仕掛けを作る必要があります。壁を通り抜けれてしまったらもはや迷路ではなくなってしまうため・・・

壁で迷路の形を作る

それではまずは壁で迷路の形を作っていこうと思います。

とはいっても、スプライトで一つ一つ壁を作っていくと面倒ですので、実際にはステージの背景に壁の絵を描いていくだけにしようと思います。

右下のステージ1を選びます。

そして、背景タブを選び、好きな形の迷路を書いていきます。フリーハンドで作成しても良いですし、図形などで作成しても大丈夫です。今回は直線を使用して作成してみました。

ここで重要なこととしては、以降でキャラクターと迷路の壁との接触判定を行いやすいようにしておくことです。接触判定を行う方法はいくつかありますが、一番簡単な方法として、特定の色と接触したことを判定できるブロックを使う方法があります。

そのため、今回作成した迷路の壁についてはすべて同じ色にしておくと、あとあと楽になります。

迷路が書けたら一旦ステージの作成は完了です。

壁にぶつかる仕組みを作る

続いてキャラクターが壁にぶつかる仕組みを考えていきます。

キャラクターは壁を通り抜けてはいけないため、壁との接触を判定し、接触した場合には壁から離れさせるというようにブロックを組めば壁は通り抜けれなくできそうです。

早速、直線を用意し、CATスプライトに対して次のようなブロックのフローを作成しました。

これは、右矢印を押した場合に、黒色と接触した場合には左方向(-X方向)に戻されるが、接触しない場合には5進めるというようになっています。

これにより、右矢印を押した場合に黒色の壁があった場合には次のような挙動になります。

ちゃんと壁に当たった場合にはそれより右には進めなくなっています。

これで迷路の基本となる挙動ができたため、他の方向に対しても同じようなブロックを作ります。

しかし、ここで一つ問題が起こりました。

一方向だけの場合には発生しなかった課題が生まれます。

実際にどのようなことが発生するかというと、次のような壁の通り抜けができるようになってしまうのです。

なぜ壁が通り抜けれてしまうのか。

この通り抜けは次のような理由で発生します。

  1. 壁にぶつかるまで右矢印を押す
  2. 壁にぶつかっている状態で左矢印方向を押す
  3. 壁に触れている状態で左矢印方向が押されると+X座標(右方向)に動くコードになっているためそのまま壁を抜けて右側に行ってしまう

つまり、壁にぶつかっている状態は右方向からぶつかったのか、左方向からぶつかったのかまで認識するようにしていないため、その時に押した方向キーと逆に動いてしまい、結果として通り抜けが発生してしまったのでした。

そもそも「壁にぶつかっている状態」が生まれてしまうこと自体が良くなさそうです。この状態が発生してしまった原因は壁にぶつかっていない状態で方向キーを一回押すと、x方向に+5進むのですが、その進み終わった結果として壁に接触した状態で止まってしまうことがあり得るからです。

そのため、この課題を解決するため、次のようにコードに改良を施します。

これは、先ほどのコードと似ていますが、壁と接触していない場合に+X方向に進んだあと、さらに接触したかどうかを最後に確認し、接触している場合には-方向に戻すようにしています。

こうすることで、そもそも「壁に接触した状態」というところで止まることがなくなり、先ほどのような問題が解消されます。

あとは、このコードを右方向以外の左方向、上方向、下方向にも同じように作ってやることで基本的なCATの動きは完成です。

あとは背景で作った迷路の道を方向キーで動かしながら進むことができます。

スタートに戻す機能も付けてみる

単に壁の中を進むようにするだけでは物足りないため、接触したらスタートに強制的に戻されるという落とし穴的な機能も付けてみたいと思います。

これは、先ほどの壁との接触判定よりははるかに簡単で、接触したらスタートのX座標、Y座標に戻る様にすれば良いだけです。

このような形で簡単につくることができます。

こちらも先ほどと同様、落とし穴の色をあらかじめ赤などの特定の色に決めておくことで、迷路の最中に複数の落とし穴を配置することができるので楽です。

実際に動かしてみた様子がこちらです。

コードは非常に簡単ですが、落とし穴の配置位置次第ではグッと難しい迷路ゲームになるのではないでしょうか。

作成例

今回作成した迷路のゲームはこちらになります。参考にして頂ければと思います。

https://scratch.mit.edu/projects/676630698

まとめ

今回、迷路ゲームを作成してみましたが、接触判定の良い勉強になりました。特に接触後の挙動を方向によって制限する必要がある場合には作り方に注意が必要だと気付きました。

迷路自体はほかにも色々な仕掛けをつくることでより面白くもできそうですし、学ぶことも多そうなので今後も試していきたいと思います。

そのほかのScratchの小技関連はこちらで紹介しています。↓↓↓
SCRATCH | MerHack (mertimes.com)

コメント

タイトルとURLをコピーしました