【スクラッチ】迷路ゲームの作り方

便利な迷路作成サイトを利用する

自分で迷路を作成しても良いのですが、迷路を自動で作成してくれるMaze Generatorというサイトがあるのでそれを利用しましょう。

下の様な画面が表示されるので、迷路の大きさを横と縦の比率を4:3にして数字を入れましょう。
スクラッチの画面は横が480で縦が360なので、その比率に合わせます。

mazegeneratorの説明1

Inner widthとInner heightは後で説明をしますが、ここでは0を入力してください。

ファイルの種類をSVGにして、Downloadをクリック。

mazegeneratorの説明2

スクラッチの画面に戻り、ステージに作成した迷路を取り込みましょう。

ステージの背景の画面で、背景をアップロードをクリックしたら、
ダウンロードのフォルダーにいって、迷路のファイル(.svg)を選択します。

作成した迷路をスクラッチに取り込む説明

無事に作成した迷路がステージの背景として取り込みができました。

新たな迷路をStage2、3と追加してみましょう。

迷路のアップロード完了画面

迷路の大きさをスクラッチの画面の大きさに合わせましょう。

迷路の壁が薄い(細い)ので、少し厚く(太く)します7の太さにしました。

SVGで取り込んでいるので、自分で迷路の壁を消したりして迷路自体を変更することできます。
鍵付きの壁を新しく作ったり、いろいろな工夫を自分なりに追加してください。

プレイヤーの動かし方と当たり判定

次はプレイヤーを操作するスクリプトをつくりましょう。

矢印キーを押すと、それぞれの方向に5歩動く。
そして、迷路の壁の黒色に触れると-5歩動く。

基本的なスクリプト画像

最初は順調に進んでいるように見えますが、

おっと、壁をすり抜けています!

壁をすり抜けるネコの動画

この原因は、2つ以上の矢印キーを同時に押すことで起こってしまいます。

プレイヤーが壁をすり抜けないためのスクリプト1

上下の矢印キーを同時に押す、左右の矢印キーを同時に押すケースでは逆走や壁のすり抜けがなかったので、

上向き矢印キーが押された時に、左右の矢印キーが押されてないことを条件にします。

他のキーにも条件を付けます。

複数の矢印キーを同時に押せないようにするスクリプト

条件を付ける時に、”かつ” ”または” ”ではない” のブロックを正しくつなげる必要があります。

ひし形で囲まれるブロック全体は算数で習う( )と同じで、カッコで囲まれる条件が優先されるので、
繫げられた条件が ”かつ”なのか、その点を理解して正しくブロックをつなげてくださいね。

 

ブロックの重ね方を説明する画像

 

プレイヤーが壁をすり抜けないためのスクリプト2

次のやり方でも、複数の矢印キーが同時に押された時にプレイヤーが動くことを防ぐことができます。

こちらの方が先ほどのスクリプトよりも簡単だと思います。

複数の矢印キーを同時に押しても大丈夫なスクリプト

 

これで壁をすり抜けることもなく、問題なく迷路のなかを動くことができます。

ところが、

アニメーションを入れたら壁をすり抜けたので、ヒットボックスを使う

プレイヤーのネコに動きをいれるためにアニメーションをいれたら、

おっと、おかしな動きをするようになってしまいました。

アニメーションのスクリプト

アニメーションをいれると壁をすり抜ける動画

当然のことですが、アニメーションに使うコスチュームの形が少しずつ違うために、
同じ座標でもコスチューム1では壁に触れていなかったのに、コスチューム2は壁に触れるということがあります。

そうなると、前に5歩進むはずだったのが、壁に触れているために-5歩進む(逆走)ことになりますね。

コスチューム1と2を重ねてみた図です。
この違いによる問題はプレイヤーの大きさ自体を小さくすることでも解消できるんですが、
今回は、ヒットボックスを使って解決をしましょう。

コスチューム1と2を重ねた図

コスチューム1と2の真ん中あたり(コスチューム2の位置をわざと大きくずらしてますが)に、
当たり判定用のコスチュームとして、四角のヒットボックスを描きます。

位置と大きさに合わせるためにコピーしていたネコの画像は消して、
四角形だけをあたり判定用のコスチューム3とします。

 

ヒットボックスの作成画像

アニメーションのスクリプトに新たに作ったコスチューム3を入れてみましょう。

スクラッチでは ”ずっと” のブロックの中でコスチュームが複数ある場合、
”〇秒まつ”や”〇回くりかえす”が間に入ってなければ、一番下のコスチュームだけが画面上に表示されます。

当たり判定用のコスチューム3は ”ずっと” のブロックの中で
”0.1秒待つ” のブロックもなく上の方においてあるので画面上には表示されません

 

シンプルな完成プログラム

これで壁を突き抜けることもなく、キー操作通りにネコが動くようになりました。

 

上手く動くけど壁にぶつかって上手く入れない時の動画

壁に触れた時におかしな動きしないかを確認するために、
コスチューム1と2の位置をわざとずらしているので、ネコの動きが変です。

皆さんが自分で作る時は、コスチュームの中心を合わせてくださいね。

でも、

ネコが下の方に行った時に、迷路の壁に当たって上手く進めない事がありますね。

よりスムーズにネコを動かす方法

プレイヤーのネコが壁と壁の間(道の真ん中)にいるようにできないかを考えてみました。

今回作成した迷路は16×12のサイズだったので、480×360のスクラッチの画面サイズから換算すると、
ひとつの道幅が30になります。

迷路の道幅の画像

矢印キーを押していない時に、ネコをこの道幅の真ん中か壁の位置に置くようにしてみましょう。

1つのマスが30なので、ネコが止まっている時の座標を30の倍数にすれば良さそうですが、
このやり方では30動かすと壁の向こう側まで移動するため、15の倍数にするようにします。

道幅の真ん中にネコを置くプログラム

これで、ネコはキー操作で5歩ずつ動きますが、
止まっている時は15歩ずつ移動した場所にいる事になります。

プレイヤーの位置を調整した後のゲーム動画

これで、壁の間に入るための微妙なキー操作が不要になりました。

今回はヒットボックスの説明をしていないので、次回の投稿にて詳しくご紹介したいと思います。