スクラッチでマリオ3Dワールド風ゲームの作り方

中級

今回つくるゲーム

難易度3 out of 5 stars

今回はスクラッチでマリオ3Dワールド風ゲームを作っていきます。奥行きのあるステージに配置されたコインを奥-手前に移動しながらゲットしていきます。ハイクオリティーな3Dゲームはペン機能を使って作っていきますが、今回はコスチュームの拡大縮小で奥行きを表現していきます。すこし考え方が難しい部分はありますがコードはとても短く作れるので初心者の方でも作りやすい内容となっています。

youtubeざっくり解説

こちらの動画を見てから記事を読むことをお勧めします。チャンネル登録もよろしくお願いします!

【ざっくり解説】スクラッチでマリオ3Dワールド風ゲームの作り方

まずは実際にゲームをプレイしてみてください。上下矢印キーで操作しながらコインをゲットしていきます。100枚中何枚ゲットできるかを競います。

はじめに

まず、以下をリミックスしてください

【素材】マリオ3Dワールド風ゲーム

こちらにはゲームを作るのに必要な素材が揃っています。

スクラッチでマリオ3Dワールド風ゲームの作り方

3Dの考え方

まず、3Dの考え方について簡単に解説していきます。
以下の絵を見てどのように思うでしょうか?ネコより遠くにクマがいるように見えますよね。ネコの頭から小さいクマが飛び出ているというように見える人はいないと思います。これは「錯覚」といいます。人は、絵に描かれたモノの大きさや、重なりから勝手に頭が立体的にとらえるのです。

スクラッチでマリオ3Dワールド風ゲームの作り方

ちなみに、試しに、大きさをこのままにして重なり方を逆にしてみましょう。頭が混乱するのがわかると思います。でもクマじゃなくてチョウだったら混乱しないですよね。人間の脳はとても不思議です。よくあるだまし絵もこの錯覚を使って作られています。

スクラッチでマリオ3Dワールド風ゲームの作り方
スクラッチでマリオ3Dワールド風ゲームの作り方

スクラッチではx方向に動く(横向きに動く)、y方向に動く(縦向きに動く)はありますが、奥に行ったり手前に行ったりする動きはありません。この動きのことをz方向に動くと言います。

スクラッチでマリオ3Dワールド風ゲームの作り方

今回のこのz方向の動きを作って奥行きのあるゲームを作っていきます。

プレイヤーの動き

基本の動き

まずはプレイヤーの動きから作っていきます。プレイヤーのスプライトに以下のコードを書いてください。プレイヤーの場所は固定して、上下矢印で大きさだけを変えていきます。z方向に1進むとおきさが1%小さくなるようにします。またz方向には60までしか行けないようにします。(つまり大きさは40%まで小さくなるということです)

スクラッチでマリオ3Dワールド風ゲームの作り方

ではこの状態で🏴を押して上下矢印キーで動かしてみましょう。
以下のように動くと思います。

これだけではあまり3Dには見えないですよね。ここからどんどん3Dっぽくなっていきます。

走らせる

次にキャラクターを走らせます。
これはとても簡単です。先ほどのコードに以下のようにコードを追加していきます。

スクラッチでマリオ3Dワールド風ゲームの作り方

これで動かしてみましょう。動きをつけると少し3Dに見えてきますね。

背景をつける

次に、背景をつけていきます。背景のスプライトに移動してください。デフォルトは背景なしになっていますが、これを背景ありに変更します。背景の地面は手前が濃い緑奥が薄い緑のグラデーションになっています。遠くに行くほど景色はぼやけるのでこのようにグラデーションをつけると奥行きのある地面に見えます。

スクラッチでマリオ3Dワールド風ゲームの作り方
ポイント

プレイヤーには影をつけていますが、影をつけることで地面に立っている感じが出ます。また影の色は地面より少し濃い緑にすることで背景になじませています。

スクラッチでマリオ3Dワールド風ゲームの作り方

ではこの状態でプレイヤーを動かしてみましょう。驚くほど3D感がでてくるのがわかります。

コインの動きを作る

コインの動きの考え方

ここからはコインの動きを作っていきます。まずはコインの動きの考え方を解説します。以下のように画面の右側にコインがずらっと並んでいて、それが左側に動きに流れていきます。

スクラッチでマリオ3Dワールド風ゲームの作り方

コインの配置を決める

では、このコインの配置はどのように決めるのでしょうか。

この配置を決めるのがコインマップというリストです。

このコインマップは初めから用意しています。リストにチェックを入れると以下のように画面に表示されます。

スクラッチでマリオ3Dワールド風ゲームの作り方

このマップの数字は以下のように対応していて、数が多いほど奥に配置され、0だとコインが配置されません。

スクラッチでマリオ3Dワールド風ゲームの作り方

ここの数字の並び方を変えることでコインの並び方が変わりますので試してみてください。

コインを流していく

では、ここからコインを流すコードを組んでいきます。コインのスプライトに以下のようにコードを書きます。

スクラッチでマリオ3Dワールド風ゲームの作り方
スクラッチでマリオ3Dワールド風ゲームの作り方
注意

変数・ブロックを作るときに何点か注意があります。まずコインを配置のブロックを作るときには必ず”画面を再描画せずに実行する”にチェックを入れるようにします。これにより、描画のスピードが上がります

スクラッチでマリオ3Dワールド風ゲームの作り方

また、コインxとコインzの変数を作る場合は必ずこのスプライトのみにチェックを入れます。それにより、1つ1つのクローンに対して値を持つことができます。

スクラッチでマリオ3Dワールド風ゲームの作り方
スクラッチでマリオ3Dワールド風ゲームの作り方

コードが書けたら実際に🏴を押してみてください。以下のようにコインが流れると成功です。

このリスト機能をつかってコースを使う技のことをマップチップといいます。このマップチップの考え方はさまざまなスクロールゲームで活用されています。その一部をご紹介します。

マップチップを使ったゲーム

コインをゲットする

次にプレイヤーがコインをゲットできるようにします。先ほど、すでに”プレイヤーに触れたらコインゲット”というブロックは作っていますので、その中身を考えていきます。プレイヤーがコインに触れたら
コインゲットなのではなく、クローンされたコインがプレイヤーに触れるとコインゲットと考えます。コインのスプライトに以下のコードを追加します。

スクラッチでマリオ3Dワールド風ゲームの作り方

これでコインがゲットでき、ゲットするたびにスコアが1ポイントづつあがっていきます。

実際にプレイしてみてください。以下のようにポイントをゲットできると成功です。

ゴールを作る

では、さいごにゴールを作ります。ゴールは一番最後のコインの後ろにおきます。ゴールのスプライトに以下のコードを書いてください。ゴールがゴールテープが右端に来たら表示されそのまま左に流れ、左端に来たらGOLAの表示が出るようにします。

スクラッチでマリオ3Dワールド風ゲームの作り方

ここまでかければ終了です。

ゲームをプレイしてゴールが出てくるか確認しましょう。

すべてのコード

すべてのコードは以下から確認できます。コインの配置を変えたり、途中で触れては行けない敵を出したり、いろいろゲームをアップグレードしてみてください。

マリオ3Dワールド風ゲーム

みんなの作品募集

作った作品をブログで紹介してもいいよ、という人はスクラッチのコメント欄でメッセージをください!できる限り紹介させていただきます。

ビンゴおじさんスクラッチアカウント