スクラッチでマリオのゲームを作る特大レッスン#05 ブロックを壊せ

スクラッチでマリオのゲームを作る特大レッスン#05 ブロックを壊せ
ok-scratch
ブロックを壊してゲームに爽快感を出す方法が分かります!
難しさ

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

LOADING...

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

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

準備じゅんび このレッスンは前回ぜんか「スクラッチでマリオゲームのつくかた#04 ゴールしてつぎへ」のつづきです。 https://scratch.coach/lesson/mario004/ 「スクラッチでマリオ」シリーズの最終しゅうゴールをチェック 最後までレッスンをすすめるとこのようなマリオゲームの土台どだとなるプロジェクトが完成かんせする予定よてです。 とうレッスンの完成かんせひん確認かくにんする スクラッチプロジェクトをコピーして保存ほぞんする ファイル>コピーを保存ほぞんする、をえらんでプロジェクトを「マリオプロジェクト005 ブロック」としておきます。 コスチュームきのスプライトをダウンロードする 今回こんかはブロックのコスチュームを使つかうので、こちらのスプライトをダウンロードしてスクラッチエディタでアップロードしてくださ。 • ブロックのスプライト ブロックの基本きほんつくる ブロックはマリオの特徴とくちょうてき仕組しくみの1つですね。ブロックの仕様しようはゴールにるので、ゴールをつくわったこのタイミングで取り組と くむのがベストでしょう。 仕様しよう確認かくにんする ブロックの仕様しようつぎのとおりです。 • プレイヤーがちかたら表示ひょうじされて、はなれたらかくれます。 • ただし、ゴールとちがって最終しゅうシーンにスポーンされるとはかぎりません。 • こちらが指定してした場所ばしょにスポーンするようにします。 • また、プレイヤーがれたときの挙動きょどうもゴールとことなります。 • マリオとおなじように、したからジャンプしてブロックにれるとこわれるようにします。 • うえよこからブロックにれてもこわれません。 • また、プレイヤーはブロックにることができます。 • 破壊はか可能かのうなブロックもあり、これをこわそうとするとバフンっとれます(なぞ表示ひょうじするところまでゴールとおなじようにつく最初しょはゴールのうごきとほとんどおなじです。 はたされたとき とりあえずはた使つかって確認かくにんしてきます。 変数へんすう「スポーンするシーンのX座標ざひょう」をつくる ゴールでもつくった変数へんすうです。 初期しょきする ゼロにれるしきつくります。とりあえず最終しゅうシーンにスポーンさせます。ゴールとまったおなじです。 からの からの これでOK。あとでシーンのかずにつては変更へんこうします。 変数へんすう「スポーンするX座標ざひょう」をつく初期しょきする しきつぎとおりです。50のところは後々のちのちえます。 Y座標ざひょう指定してする 30くらしておきます。 「ずっと」ループを条件じょうけんブロックを条件じょうけんしきれる ここもゴールとおなじく、スポーンするX座標ざひょうをプレイヤー(カメラ)が通り過とお すぎたら、と条件じょうけんしきにします。 表示ひょうじ表示ひょうじ切り替き かえる 最初しょはブロックをかくしておて、プレイヤーがちかたら表示ひょうじするようにします。 動作どうさ確認かくにんする スポーンされましたか? 変数へんすう「スポーンするX座標ざひょう」1030を、変数へんすう「★カメラのX座標ざひょう」がぎたらブロックが表示ひょうじされました。 うまくかな場合ばあは、ここまでのしきただか、おおなりなりのきがってるかたしかめてくださ。 カメラにわせてブロックをうごかす プレイヤーが左右さゆううごたら、ブロックもわせてうごくようにしてきます。 変数へんすう「★画面がめん右端みぎはしのX座標ざひょう」をつく前回ぜんかレッスンでマジックナンバーになってしまって画面がめん右端みぎはしあらわす240ですが、このタイミングでしっかり変数へんすう定数すう)しておきます。 でもスクラッチ3.0にはまだ定数すう機能きのうがなので、引き続ひ つづ変数へんすうびます。 初期しょきする ステージで変数へんすう「★画面がめん右端みぎはしのX座標ざひょう」を初期しょきしておきます。 X座標ざひょう調整ちょうせブロックをしきをつくる からの からの これを X座標ざひょうあたにセットします。 動作どうさ確認かくにんする これでプレイヤーにわせてブロックがうごくようになりました。ゴールの挙動きょどうおなじです。 通り過とお すぎてもかくす ゴールとちがって、ブロックはプレイヤーがスルーしてしまうこともあります。その場合ばあは、画面がめん左端ひだりはしにずっとのこってしまうので、しっかりかくしたおもます。 変数へんすう「スポーンするシーンのX座標ざひょう」を調整ちょうせする シーンの合計ごうけすうではなく、直接ちょくせつ2とれておきます。動作どうさ確認かくにんのために暫定ざんててき数値すうちにしておきます。 これでへんなところにスポーンします。 そして通り過とお すぎても表示ひょうじされてしまうことも確認かくにんできました。 これをかくしたわけです。 X座標ざひょう左端ひだりはしったらかくかくすための判定はんて方法ほうほう色々かんがえられるとおもますが、今回こんかはブロックのX座標ざひょうが−240(左端ひだりはし)をえたらかくすようにします。 しきにするとこのようなかんじです。 このしきを「かつ」ブロックで既存きそんしき組み合く あわせることで、表示ひょうじ表示ひょうじ切り替き かえます。 また、「もし」ブロックを「もし〜でなければ〜」ブロックに置き換お かえて、かくすブロックを「でなければ」に移動どうしてくださ。 ブロック定義「スポーンする」をつく基本きほんてきうごきのめとして、ブロック定義つくります。 ブロックは1つではなく、たくさん配置されるはずです。 そのため、このタイミングでクローンもしておきます。 オプションへのチェックもしておきます。 変数へんすう初期しょき部分ぶぶんうつ引数ひきすう割り当わ あてる 変数へんすう「スポーンするY座標ざひょう」をつく初期しょきする 初期しょきコスチュームを明示する ブロック1に着替きがえる処理しょりれておきます。 クローンをつくる クローンされたときの処理しょりにメイン処理しょりうつす Y座標ざひょう変数へんすう割り当わ あてる 適当てきとう指定してしてあった30のわりに変数へんすう割り当わ あてます。 動作どうさ確認かくにんする はたされたときにブロック定義「スポーンする」をたたて、うまくブロックが配置されるかチェックします。 するとへんました。 これはなん予想よそうがつきますか? そう、これはスプライト本体ほんたです。 かくわすれてました。 本体ほんたかくす これでOKです。 色々上手うまったとおもきや、レベル2でもおな位置にブロックがスポーンしてしまました。 レベルによってブロックの配置える ブロックをしてませんから、レベル1でスポーンしたブロックはそのままレベル2でも表示ひょうじされてしまってます。 レベルによってブロックの配置えたので、改善ぜんしてきます。 スポーン処理しょりのタイミングをえる はたされたときにスポーンするのではなく、メッセージ「レベルの初期しょきわりました」を受け取う とったときにスポーン処理しょりをするよう変更へんこうします。 本体ほんたかく処理しょりはそのまま レベルごとの条件じょうけん分岐ぶんきブロックを追加する ここは泥臭どろくさく「もし」ブロックでレベル1なら、レベル2なら……と指定してする方法ほうほうがもっともシンプルです。 メッセージ「ゴールしました」を受け取う とりクローンをす これでレベルごとにブロックは刷新さっしんされます。ふるものはされ、あたら配置おこなわれます。 レベル2のブロックも配置する すべてうまくったかためすために、レベル2のブロックも適当てきとうので配置してみてくださ動作どうさ確認かくにんもして、ブロックがレベル1とはちが場所ばしょることをチェックします。 ブロックをこわ基本きほんてき動作どうさはこれでOKです。ここからはブロックを破壊はかする機能きのうにタックルしてきます。 現状げんじょうではプレイヤーとブロックが接触せっしょくしてもなんきません。 たり判定はんてつくる まずはカンタンなたり判定はんて実装じっそうしてみてスタートとします。 これでブロックにれるとわることを確認かくにんしてくださ。ここから実装じっそうはじめます。 ブロック定義こわれたか調しらべる」をつくる  ブロック定義中身なかみつくしがたつくった「プレイヤーにれたら〜」の処理しょりをブロック定義移動どうします。 変数へんすうこわれたかどうか」をつくる プレイヤーがれたら変数へんすうこわれたかどうか」を1にする をつけるブロックはしてOKです。 クローンされたときの処理しょり条件じょうけんぶん追加する これで動作どうさ確認かくにんしてくださ。ブロックにプレイヤーがれたら「こわれた!」とうはずです。 ただ、これだとプレイヤーがブロックのどこにれても「こわれた!」とます。 たり判定はんてようのコスチュームをつくる ジャンプでしたからたったときだけこわれるようにしてきます。そのため、ブロックの「弱点じゃくてん」をコスチュームでめます。 1. ブロック1のコスチュームを複製ふくせします 2. 適当てきとうので、ブロックの下部かぶ四角しかくつくります。すこりょうサイドをけておきます。 3. ブロックの部分ぶぶん不要ふようなのでします 4. コスチュームを「ブロック_弱点じゃくてん」に変更へんこうします たり判定はんて前後ぜんごでコスチュームをえる 最初しょつくった「ブロック_弱点じゃくてん」に着替きがえます。そして処理しょり最後にコスチュームをもとにもどします。 まはブロック1で固定こてなので、そのまま指定してすればOKです。 動作どうさ確認かくにんする 動作どうさ確認かくにんしたのですが、はプレイヤーがブロックをすりけてしまうので、しっかり確認かくにんできません。 ブロック定義こわれたか調しらべる」のチェックは後回あとまわしにして、まずプレイヤーとブロックが接触せっしょくするロジックに取り組と くみます。 プレイヤーのブロック定義「シーンにれてるか調しらべる」をえる 「または」ブロックを使つかって、シーンかブロックにれたらTRUEトゥルーにします。 名称しょうえる シーンにれてるか調しらべると名称しょうを「障害しょうがぶつれてるか調しらべる」にえます。 変数へんすう「シーンにれてるかどうか」の名称しょうえる 変数へんすうも「障害しょうがぶつれてるかどうか」にえます。 動作どうさ確認かくにんする ブロックにれるようになりました。ジャンプりょくりずにれな場合ばあは、ったんマウスを使つかってプレイヤーをつかんでせてもでしょう。 ってもブロックの弱点じゃくてんにはれてので、こわれることはありません。 一方っぽうしたからジャンプしてブロックの弱点じゃくてんれると「こわれた!」とうデバッグようのセリフがます。ブロックにかんしては意図したとおりの振る舞ふ まですね。 ブロックがこわれる振る舞ふ ま作り込つく こむ そろそろ「こわれた!」とわせるのをめて、こわれる振る舞ふ ま作り込つく こみます。またブロックのスプライトを選択せんたくしておてくださおとらす こわれるときのおとめてらします。ここではCrunchクランチおとえらびました。クランチは噛み砕か くだくと意味ですが、なんとなくブロックがこわれるかんがあったのでえらびました。 「○とう」ブロックをはずして「おとらす」ブロックをれました。 コスチュームをえるループをこわれる動作どうさのコスチュームは5あるので、「5繰り返く かえす」ループをてくださこわれながらフェードアウトする ブロックのコスチュームがわるごとに、徐々じょじょにブロックが崩壊ほうかしてきます。それにわせて幽霊ゆうれ効果こうかたかくしてき、徐々じょじょ透明とうめします。 最終しゅうてきには5 * 20 = 100となり、完全かんぜん透明とうめになります。これにおとわさり、ブロックがこわれたかん演出えんしゅつします。 クローンを削除さくじょする 透明とうめにするだけではなく、最後にクローンをして本当ほんとう消滅しょうめつさせることで終了しゅうりょうです。 動作どうさ確認かくにんする ブロックが意図したとおりにこわれてフェードアウトしてくかたしかめてくださ。 プレイヤーのあたまたった振る舞ふ まつくる ブロックのこわれたかん演出えんしゅつできましたが、現状げんじょうではプレイヤーがブロックを突き抜つ ぬけてジャンプしてしまます。 あたまたったときは、バウンドするように落下らっかしたほうが自然しぜんおもます。 コスチューム「たり判定はんてエリアじょう」をつくる 1. 「たり判定はんてエリアした」を複製ふくせします 2. 目安めやすとしてあるく1のネコを配置します 3. あたまかくれる程度位置四角しかくえがきます。にはこだわりません。 4. コスチュームを「たり判定はんてエリアじょう」にえます 5. 最後にネコはしてOKです ブロック定義「Yじく移動どうする」をえる たり判定はんてエリアのみチェックしてるので、たり判定はんてエリアじょうでもチェックするようにえてきます。 コスチュームをえるブロックをうつす ループのそとでコスチュームをえてましたが、ループえるようにブロックを移動どうします。 移動どうまえ 移動どう コスチューム変更へんこうからした複製ふくせする ごっそりコピーします。 たり判定はんてエリアじょう着替きがえる うえのスクショでは、「コスチュームをたり判定はんてエリアじょうにする」ようにしてあるので、みなさんもえておてくださ。 ログもえる ログも「うえれました」にえておくとかりやすです。 落下らっかさせる プレイヤーが上昇じょうしょうちゅうあたまたったら落下らっか処理しょりはじめてほしです。 コスチューム「たり判定はんてエリアじょう」の状態じょうた障害しょうがぶつれたとき、変数へんすう「スピードY」のあたがプラスであれば、上昇じょうしょうちゅうあたまたったとします。そしてこのタイミングで滞空くう時間じかんにプラスのあたれます。数値すうちおおきめに99をれておきます。 また変数へんすう「スピードY」のあたをゼロにしておきます。うえかうちからであるスピードYをゼロにすることで、これ以上じょうプレイヤーが上昇じょうしょうすることはなくなります。 上昇じょうしょうするちからがゼロで、空中くうちゅうることをしめ滞空くう時間じかんにプラスのあた格納かくのうされてるため、つね重力じゅうりょく影響きょうけてるプレイヤーは落下らっかはじめます。 バウンドさせる ただ落下らっかするのではなく、ブロックにたって跳ね返は かえるようにバウンドして落下らっかさせたので、Y座標ざひょうをガクッとらします。 動作どうさ確認かくにんする ブロックにたるとプレイヤーの上昇じょうしょうまり、かつしたに10座標ざひょうぶんガクッとがるので、バウンドしてるようにえます。 これでプレイヤーがわもブロックにたったかん演出えんしゅつができました。 ブロックをリファクタリングする 破壊はか可能かのうなブロックを作り込つく こまえに、すこしだけリファクタリング(改善ぜん)しておきます。 ブロック定義表示ひょうじ表示ひょうじ切り替き かえる」をつく表示ひょうじかくすブロックの処理しょりをブロック定義にまとめておきます。 移動どうまえ 移動どう  ブロック定義こわれる」をつくこわれる処理しょりもブロック定義にまとめます。 移動どうまえ 移動どう こわせなブロックをつく破壊はか可能かのうなブロックばかりだと、たんなる足場あしばとしてておきたブロックなどもこわれてしま、ゲームがすすめなくなってしまます。 そこで、破壊はか可能かのうなブロックと破壊はか可能かのうなブロックの両方りょうほうつくれるようにしてきます。 ここでは変数へんすう破壊はか可能かのうかどうか」とうフラグ変数へんすう使つか作戦さくせんきます。 ブロック定義「スポーンする」を編集へんしゅうする もともとつくってあるブロック定義「スポーンする」をみぎクリックして編集へんしゅうします。ラベルと引数ひきすう下図かずのように追加します。 変数へんすう破壊はか可能かのうかどうか」をつく初期しょきする 破壊はか可能かのうなときだけこわれるようにする こわれたか調しらべる処理しょりに、変数へんすう破壊はか可能かのうかどうか」を使つかった条件じょうけん分岐ぶんき追加します。 これで破壊はか可能かのうではなブロックは、そもそもブロック定義こわれたか調しらべる」が無効むこうになります。 ブロック定義「スポーンする」の引数ひきすう指定してする ブロックをスポーンさせるところで、かくブロックに0か1のあたれておきます。 • 0ならこわれません • 1ならこわれます 動作どうさ確認かくにんする 破壊はか可能かのうなブロックにジャンプでたってもなんきません。これでただのですが、なんだかかりづら印象んしょうけました。 破壊はか可能かのうエフェクトをつくる マリオのゲームでは破壊はか可能かのうなブロックをこわそうとすると、バフンっとれるようなエフェクトがきて「あ、これはこわせなのね」と直感ちょっかんてきかります。 ここでもそうったうごきを実現じつげんしたおもます。 これにはブロック定義こわれたか調しらべる」を使つかます。この中身なかみ少々しょうしょう複雑ふくざつ変更へんこうするので、作り直つく なおすような手順てじゅん解説せつします。 「もし〜でなければ」ブロックをく まずこう条件じょうけん分岐ぶんきつくります。 コスチューム「ブロック_弱点じゃくてん」をける 破壊はか可能かのう場合ばあにプレイヤーにれたのブロックを追加する 最後にコスチュームをもどす これで現状げんじょうの「こわれたか調しらべる」とおな処理しょりができました。つぎに「でなければ」の中身なかみつくります。 コスチュームをもどすブロックを追加する Y座標ざひょうをずらす処理しょりつくる バフンっとうエフェクトをあらわ処理しょりつくります。とりあえずY座標ざひょうを1ずつ合計ごうけ3ずらしてもどすブロックをつくります。 合体がったさせる 動作どうさ確認かくにんする すると上手うまき……ませんでした。 修正しゅうせする 「プレイヤーにれたら」と条件じょうけん分岐ぶんき一番ちばん外側そとがわ配置して、コスチュームをもどすブロックも外側そとがわ移動どうします。 かりづらおもますので、修正しゅうせ作業さぎょう動画どうがにしておきました。 動作どうさ確認かくにんする 今度こんどこそブロックをこわそうとびつくとバフンっと上下じょうげにブロックがうごき、こわれませんよアピールをします。 成功こうです。 しかし、よこあるきながらこわそうとしてみてくださ。カクカクしてしまます。上下じょうげうご部分ぶぶんはそのままですが、よこ瞬間しゅんかん移動どうするようにカクカクっとうごてしまうのです。 これはカメラが移動どうして処理しょり関連かんれんしてます。 また、もうちょっとバフンかん修正しゅうせしたです。たてに3はおおきすぎたので1か2になおします。 破壊はか可能かのうエフェクトを修正しゅうせする X方向ほうこうにカクカクしてしまう原因げんは、カメラがうごるのにブロックがY座標ざひょうにのみうごるため、カメラにてこれてな瞬間しゅんかんがあるからです。 そこで、XもYも同時どうじうごくようブロックを変更へんこうします。 X座標ざひょうにはカメラのうごきにわせてうご演算えんざんれます。これはすでにつくった演算えんざんをコピペするとよでしょう。 そしてY座標ざひょうにはとりあえず「Y座標ざひょう + 1」をれておきます。 マイナスの挙動きょどうつくる ブロック定義位置調整ちょうせする」をつくる カメラにわせてうごかす処理しょりは、3箇所かしょらばってます。ほとんどおな処理しょりなので一元ちげん管理かんりしておきたおもます。 実装じっそうする 引数ひきすう適用てきようする 引数ひきすう適用てきようします。 また、Y座標ざひょう部分ぶぶん変数へんすう「スポーンするY座標ざひょう」を利用りようすることにしました。 ブロック定義こわれたか調しらべる」置き換お かえる 「クローンされたとき」置き換お かえる 動作どうさ確認かくにんする どうでしょうか。納得なっとくくバフンっかんがでました。 コインをゲットせよ ブロックをこわせるようになりました。しかし、なんりませんね。そうです、マリオではブロックをこわしたらなかからコインがたり、キノコがでてきたりしますよね。 スクラッチばんマリオでも、コインをゲットできるようにします。 すうじつ以内更新こうしんします!ブックマークよろしくおねがします♪
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチプログラミングのゲーム攻略

スクラッチプログラミングのゲーム

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