スクラッチでマリオのゲームを作る特大レッスン#13 仕上げる

スクラッチでマリオのゲームを作る特大レッスン#13 仕上げる
ok-scratch
マリオをiPadに対応させる方法が分かります!
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

このスクラッチゲームの作り方への質問もOK このスクラッチゲームの作り方への質問もOK
このスクラッチゲームの作り方に挑戦していて分からないことが発生したら質問してみてね。気づいたタイミングで回答するよ。 質問は 僕のスクラッチのプロフィール で受け付けているよ。

質問テンプレート(素早く3回クリックすると全選択できるのでコピーしよう)

・◯◯ ... 記事のどこまで実装が終わったのかを記入しよう。
・□□ ... どんな問題が起きているのか、どういうときに起きるのか、具体的に書こう。
・共有済みURL ... たまに共有してない作品URLを書いてる人がいるけど、共有しないとこちらから確認できないからよろしくね。

シーンを微調整する

レベルのスプライトに修正を加えます。

過ぎたシーンを隠す

プレイヤーが歩いてシーンを移動すると、後ろのシーンが見えたままになってしまう状態でした。

少しかっこ悪いので、隠すようにします。

X座標を検知して表示と非表示を切り替える

まずは適当にマイナス500で隠すようにします。

プレイヤーを動かして値を微調整しましょう。

定数「■1シーンの横幅」を利用する

だいたいこのくらいかなという数値を見つけたら、定数を利用します。

数字でも解説しておきます。

僕の場合は、微調整した結果ちょうどいい数値がマイナス530くらいでした。

この値はだいたい定数「■1シーンの横幅」(540)と同じになります。シーンが過ぎたら、という条件はX座標が1シーンの横幅分マイナスになったらと言い換えることができるのです。

しかし、直接入力で-540や-530と入れるとマジックナンバーになってしまいます。

そこで、定数を使っておくことで「1シーンの横幅分を計測しているんだな」と他の人でも分かるようにしておくのです。

そうすると「10はマジックナンバーでは?」と思う人もいます。厳密には、そのとおりです。これも変数なり定数なりにして管理したら完璧だと思います。

ただ、そこまで潔癖になる必要もないので、このあたりは個人のサジ加減です。スクラッチはあくまで個人の開発なので、厳密なコーディング規約があるわけではありません。楽に行きましょう。

  • コーディング規約とは? コーディング規約とは?

    チームでプログラミングをしていると、個々人が勝手なマイルールでコーディングすることを防止するべく、「こういうときは定数にして」「こういう処理はブロック定義にして」「グローバル変数には最初に★を付けて」といったルールを明文化したコーディング規約というものを作ることがあります。とくにシステム開発会社ではよく見かけます。コーディング規約がないと、いわゆるスパゲッティコードという状態になる可能性が高いです。

    スパゲッティコードというのは、スパゲッティの麺のようにコードとコードが複雑に絡まり合って、読解するのも修正するのも非常に困難な状態のことです。

プレイヤーを微調整する

プレイヤーの動きはかなり洗練されてきているのですが、もっとよくなります。

例えば操作です。矢印キーだけではなく、Wキー、Aキー、Dキーにも対応していきます。まだSキーに相当する処理はないので、Sはスルーします。

また、iPadにも対応させます。

そしてアニメーションも、ジャンプ中や立っているポーズを作っていきます。

上とWキーでジャンプするよう変える

まずは操作から取り掛かります。

上向き矢印キーが押されたときの処理を複製する

Wキーに対応する

ブロック定義「ジャンプする」を作る

処理を移植する

上キーとWキーには、ブロック定義「ジャンプする」を配置しておきます。

右とDキーで右に動くようにする

次は右に歩く動作です。

右向き矢印キーが押された時を複製する

Dキーに対応する(2箇所)

左とAキーで左に動くようにする

つづいて左も同じように対応します。

左向き矢印キーが押された時を複製する

Aキーに対応する(2箇所)

iPadなどのタッチ操作に対応する

iPadなどのタブレットやスマホでスクラッチをやりたい人も増えてきています。ここでも対応しておきましょう。

ブロック定義「タッチで操作する」を作る

利用する

マウスが押されたことを検知する

調べるブロックの1つに「マウスが押された」ブロックがあります。これを使うとタッチパネルをタップしたことを検知できます。

もちろんパソコンでマウスクリックしたことも検知できます。

これによってスマホでもタブレットでもスクラッチを楽しめます。

X軸の移動に対応する

調べるブロック一覧に「マウスのX座標」という値が用意されています。これを使うと、タップした位置を知ることが出来ます。

プレイヤーはX座標0にいるので、0より大きければプレイヤーの右側、小さければプレイヤーの左側がタップされたと解釈できます。

右がタップされた場合
左がタップされた場合

Y軸の移動に対応する

次はジャンプですね。

マウスのY座標を調べて、50以上ならジャンプと見なします。50はお好みで調整してください。

ブロック定義「ジャンプする」を置く

向きを変える

あとはプレイヤーの向きを変えれば完成です。

「マウスのX座標」と絶対値の割り算を使って1ブロックで左右を向く処理を作ります。

ステップ1
ok-scratch ok-scratch

追記)ここが最初掛け算になっていたため、バグっていました。ご報告いただいたMeIonbreadさん、ありがとうございました!!

ステップ2
ステップ3
ステップ4
ステップ5

動作確認する

完成しました!

クリボーがやってきた!

いよいよ土台が完成しました。ここからはフィーバータイムです!マリオっぽい敵モブを実装して、スクラッチならではのマリオゲームにしていきましょう。

敵モブ作りは少しお時間をいただきます!またレッスンを更新していきますので、ブクマなどよろしくお願いします。

完成サンプルがあるよ
おつかれさま!今回のチュートリアルには完成サンプルがあるから、作ってて分からなくなったり、 動作確認をしたいときはチェックしてみてね。

スクラッチャーからのコメント

mytec_scratch_6 mytec_scratch_6 2024-12-06
敵モブを上から踏んだのにダメージを受けるのはなぜ?
ok-scratch ok-scratch 2024-12-06
@mytec_scratch_6 当たり判定用の「スライム_弱点」というコスチュームが微妙にズレているせいかなと思います。ピッタリよりすこし大きめにすると直るかも。
mytec_scratch_6 mytec_scratch_6 2024-12-06
@ok-scratch OK!
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチゲーム攻略

スクラッチゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品