スクラッチコーチキャンプ ゲームクリエイターに、オレはなる!そんなキミを応援(子供も大人も)
  • ALL
  • はじめての方へ
  • スクラッチゲームの作り方

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮
    この記事は スクラッチコーチで掲載されているオリジナル記事 のバックアップです。
    スターター作品
    なし
    今回の完成サンプル
    なし

    アスレという点ではかなり高度なレベルまできたね。ここにアイテムを加えることでプレイヤーにゲームをする目的を与えよう。

    すごく難しいアスレのコースをクリアすればアイテムがザックザク、でも初心者にはアイテムは少ないけどシンプルでカンタンなコースも用意する、といった分岐も用意できたりするぞ。

    ランキングを作って何個アイテムを集めることが出来たのか競ってもらうのも楽しいよね。

    よぉし、燃えてきた!アイテム作りを一緒に見ていこう!

    今回の目標

    • シーンごとにアイテムを配置できる
    • プレイヤーが触れるとアイテムをゲットできる
    • その際にちょっとした演出を加える

    いったん障害物とギミックを非表示にしておく

    開発中はアイテムに集中したいので、障害物とギミックはいったん表示されないようにブロックを外しておこうと思う。

    障害物

    ギミック

    スプライト「アイテム」を追加する

    スプライトを選ぶ、をクリックしよう。今回はアイテムはテンプレートの中から選ぼうと思う。

    スプライト名は「アイテム」にしておこうか。

    リンゴでいいかな、と思うのでappleアップルを見つけてほしい。

    アイテムのコスを整える

    ちょっと大きさ変えてみた。だいたい26 x 26くらい。

    実は形が崩れてる

    このスクショをよぉく見ると、右側のリンゴの丸みが削れて、まっすぐになってしまっているのが分かる?

    せっかく丸いリンゴなんだし、きれいに描画したいよね。そこで裏技。

    リンゴの上に四角形を描こう。

    で、その四角形だけを透明にしてみて。

    そうすると丸みがきれいに描画されるようになる!

    ちょっとしたことだけど、こういう知識を知っちゃうと今後スクラッチでコスを見る目が肥えてくる。

    緑の旗が押されたら

    よし、最初のコーディングはそんなに難しいことはしないよ。プレイヤーに触れたら隠せばいいだけだ。

    いったん停止ボタンをクリックする。

    そしたらアイテムの場所がブロックパレットのブロックに反映される。

    コスをappleにして、XとY座標をセットするブロックを置こう。

    そしていつもの条件ブロックではなくて、「◯まで待つ」ブロックを使おうか。これでプレイヤーに触れたら音がなってアイテムが消えるはず。

    プレイヤーに触れたらアイテムが消えるかテストする

    うし、基本の動きはこれでOK。これを改善していこう。

    消えないバグを直す

    さぁ、これだけしか実装してないのにすでにバグがある。バグとは恐ろしきものよ。バグ撲滅部隊の隊長(※)としては見逃せない。

    障害物やギミックなどと同じように、メッセージ「シーンを切り替える」を受け取ったときに、表示と非表示をコントロールするコーディングを作ろう。

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003e※ バグ撲滅部隊(通称BBB)とは、この世からバグを一掃するために構成された特殊部隊のことである(うそ)u003c/pu003e

    シーンを切り替えたらアイテムが消えるかテストする

    いつもより長めのショート動画だ、あやしい…

    おいおいおい!どないなっとんねん!

    たしかにシーン2にはリンゴが出ないようになってたけど、シーン1に戻ってきてリンゴに触れても消えないじゃないか!?こりゃバグの匂いがするぜ。

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003eブツ…こちらBBB隊長のok-scratch、バグを発見した。これより殲滅する。オーバー。u003c/pu003e

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003eI copy.(了解)u003c/pu003e

    消えないリンゴを消す

    さて、そもそもなぜリンゴは消えなかったのだろうか。

    リンゴが消えるのに「◯まで待つ」ブロックを使ったことをおぼえているだろうか。実はここに原因がある。

    リンゴはプレイヤーが触れるまで待ち、そして一回プレイヤーに触れたから消えたよね。そうするとこの処理はもう終わってしまうんだ。シーンが切り替わったことでリンゴは再び「表示する」ようになってるけど、再び「プレイヤーが触れるまで待つ」ようにはならないっていうこと。Oh No!

    では、何を直せばいいだろう?

    「◯まで待つ」をやめる?

    いや、そもそも一回ゲットしたアイテムが再び表示されてしまうことこそが真の問題だと思わない?

    そこで今回は変数を使ってバグをつぶしていきたいとおもう。

    変数「出番のシーン」

    この変数にはアイテムがどのシーンで表示されるか、出番を格納することになるよ。

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003e出番のシーン、って単に「出番」でもいいかもしれないけど、シーンっていうワードを名前に持っていたほうが「シーンの番号を入れるんだな」って直感的に分かると思って「出番のシーン」にしてある。u003c/pu003e

    シーン1に表示したいから、1で初期化する。

    条件式も変数に置き換える。

    プレイヤーに触れたあとは、出番のシーンを空白にすることで、1度ゲットされたアイテムはプレイヤーが別シーンから戻ってきても表示されないようになる。

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003eこれでどうして1度ゲットされたアイテムが二度と表示されなくなるのか。u003c/pu003eu003cpu003eなぜなら、いま変えた条件式が絶対にFALSEフォルス、つまりになるから。基本的に★シーン番号は数値しかはいらないため、出番のシーンが空白だと一致することはない。u003c/pu003e

    アイテムが1度ゲットされたら再び表示されることがないかテストする

    オッケー!自然だね。また1つ、この世からバグをほうむった。

    クローンにして複数個体を管理する

    このままではアイテムは1つしか表示できないので、クローンにしていこうか。

    緑の旗が押されたときの「◯まで待つ」から下をゴッソリ移動して、元の場所で自分自身のクローンを作るようにするよ。

    さらに、クローンではない本体は使わないので、本体の変数「出番のシーン」は空白にしておこう。

    アイテムをゲットする|スクラッチでアスレチックゲームの作り方⑮を語るok-scratch ok-scratch

    u003cpu003eこれはクローンからブロックを移動したのではなく、本体用に新しく「出番のシーンを空白にする」ブロックを置いているので、クローンの方にもある「出番のシーンを空白にする」はそのままにしておいてね。u003c/pu003e

    メッセージ「セットアップする」を作る

    緑の旗が押されたとき、ではなくてセットアップするというメッセージを使って初期化処理を行うように変えるよ。そうすることでゲームがスタートする前に確実にクローンの配置が完了するようにタイミングを調整できるから便利なんだ。見ていこう。

    緑の旗が押されたときのコーディングをすべて移動しちゃおう。

    スプライト「プレイヤー」からメッセージを送って待つ

    ここで定義「スタートする」の直前でセットアップするメッセージを送って待つようにするよ。これで確実にスタート前にセットアップ処理が完了されるから安心。

    壊れてないかテストする

    ちょっとしたリファクタリングになったので、壊れてないかテストしよう。

    よし。

    本格的なスポーン処理を実装する

    段階的に実装を進めてきたけど、ここで定義化してしっかり整えていく。

    スプライト「アイテム」を開こう。

    定義「_スポーンする」を作る

    引数が多いから注意して作ってほしい。

    セットアップする際のコーディングをごっそり移動してしまおう。

    元の場所から実行ブロックをたたく。同時に、引数を適切に割り当てておこう。

    アイテムを複数スポーンさせる

    シーンや座標は、キミのステージに合わせて置いてみてほしい。

    あと最初に隠す処理をしておこう。

    アイテムの演出を作る

    空中にアイテムが浮かんでいるような演出にしたいので、静止しているのではなく上下にフワフワ動いているようにしたい。ここでは変数を使って座標を上下させるワザを使っていくぞ。

    • アイテムが待機中に上下に動く
    • プレイヤーが触れたら上方に向かってフェードアウトする

    やってみよう。

    クローンされたときの処理を改修する

    「◯まで待つ」ブロックを外して、代わりに「◯まで繰り返す」ブロックを置こう。

    条件のところに「プレイヤーに触れた」をハメる。

    変数「コマ」を作る

    このコマを演算にかけて値を調整する。スクショを頼りに演算を組んでほしい。

    これをY座標に加算していく。

    その下でコマを5ずつ変えて、上下幅を調整しよう。

    アイテムが上下するかテストしよう

    フワッフワだね!そそるぜ。はやくゲットしたくなるよね。

    ゲットしたら上方にフェードアウトする

    クローンされたときの最後の方で、ループを設置して徐々に上に移動しながら透明になる処理を作る。幽霊効果が合計100になれば、ループは何回でもOK。

    プレイヤーが触れたらスッと消えるかテストする

    やった!いいかんじ。

    アイテムの取得数を管理する

    アイテムを何個ゲットしたかは、いろんなことに使える数字になる。たんにプレイヤーの満足感にもなるし、10個集めれば残機が増えるとか、5個集めると他のアイテムと交換してもらえる、とかとか。

    変数「★アップル数」を作る

    クローンされたときに1加算される処理を作る。

    あとはセットアップする際に初期化もしておこうか。

    これで完成!

    まとめ

    リンゴをゲットできるようになったし、演出もばっちり。これでアスレにアイテムという要素が増えたね。

    しかし、アスレとかRPGってよく「重要アイテム」みたいな存在もあってさ、あるアイテムを持ってないと開かないドアがあったりするじゃん。

    こういう仕組を実装する効率の良い方法ってないかな?もちろんある!次回は重要アイテムの管理方法を実装するぞ!

    当連載で取り上げるグリフパッチさんの動画はこちら

    この記事への質問やコメントをどうぞ

    ただいま実験的に質問を受け付けています。

    コメントは受け付けていません。

    スパム防止のため、 質問をするにはログインが必要 です。ログインはスクラッチのアカウントがあれば誰でもできます。

    ブクマよろしくお願いします!という口コミを寄せてくれた方 ブクマよろしくお願いします!
    どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!