※ 当ページには【広告/PR】を含む場合があります。
2020/09/22
2022/08/22
【Scratch入門〜中級編】スクリプトを止め方色々〜止め方を理解してゲームの中断・終了を理解する
【Scratch入門〜中級編】他のスプライトからクローンをして使う方法
以前の記事|スプライト・クローンの基本的な利用方法でクローンを取り扱うときの注意点に関して特集していましたが、今回はもっと突っ込んだクローンの使い道を考えてみましょう。【Scratch入門】スプライト・クローンの基本的な利用方法もっとも重要な機能である「クローン」の基本的な使い方と注意点を解説します。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
クローンに識別番号を割り振る
Scratchプログラミング特有のテクニックになりますが、ローカル変数を使ってクローンに識別番号を与えるテクニックを以降で説明していきます。練習用のプログラムをScratchのオンライン版に置いておりますので、こちらを参考にしてください。このサンプルプログラムをスタートすると、以下の図のようになります。コピー元であるボタン
スプライトが3つクローンされるだけの単純なものです。クローン機能はローカル変数と組み合わせることで、暗黙的に各クローンごとに識別するための番号を与えることが出来ます。まずは各クローンの番号の割り振り方を詳しくみていきます。テスト用のスプライトを作成する
まずは適当なScratchプロジェクトを作成して、スプライトのサンプルからボタン
のスプライトを選択し、ブロックプログラミングのパレットで作業します。ゲームがスタートした時の初期化のブロックとして、以下のようなブロックコードを作成してみます。開始早々にローカル変数ばんごう_
をゼロにして、3回のループでクローンを作成するだけですので理解は簡単だと思います。なお、サンプルプロジェクトで、他のスプライトとして用意していたたこ
のスプライトを、メッセージイベント・プレイモード
を送ることで、動かし始めるようにしています。このメッセージイベントは次の「クローンとの当たり判定」の節での説明に使うので、ひとまずここでは無視しておいてください。ここでのポイントは、クローンに割り振られるローカル変数は、クローンされた時の値が使われる、という暗黙のルールが適用されることです。つまりこのルールがあるので、クローンされた順番で、最初のクローンはばんごう_
が0、2番目のクローンはばんごう_
が1、3番目のクローンはばんごう_
が2、そして、オリジナルであるコピー元のスプライトには最新の値である3がばんごう_
という識別番号として割り振られることになります。これがどう重要かというと、まずScratchで「変数」というと、通常はグローバル変数を指す言葉となっています。グローバル変数はプログラム全体が共通に扱える値ですので、特定のスプライトからクローンしたときに、クローンしたスプライトだけが持つ情報としては利用できない、という性質があります。ですが作成するプログラムによっては、クローンしたスプライトだけが使える情報として区別できないと困る場合があります。そのために用意されているScratchの仕組みが、「ローカル変数」です。ということで、Scratchプログラミングに慣れてきた人は、グローバル変数とローカル変数を意識的に使い分けてみると良いでしょう。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
2つのスプライト間の当たり判定を入れる
クローンしたスプライトに、別のスプライトが触れた際に、どのクローンに衝突したかを判別するには少し工夫が必要になります。まずは当たってくる側のたこ
のスプライトのコーディング例をみていきましょう。たこ
のスプライトは、とにかくボタン
スプライトに触った時、さわった
イベントを送って、プログラム全体に衝突したことを知らせています。この時、たこはどの番号のクローンに当たったかわかりませんが、とにかくボタン
スプライトのどこかに当たったことをメッセージイベントとして発生させています。では、たこ
がボタン
側のどこのクローンに当たったかをどのように判定するのでしょうか。結論としては、ボタン
側の設定はボタン側でしか分かりませんので、以下のような衝突判定用のスクリプトを追加する必要があります。この場合、たこからさわった
イベントを受け取った際に、逆にボタンがたこに触れているかを判定し、現在たこと接触しているクローンのばんごう_
を読み取ることでどこのクローンなのかを知ることが可能です。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
識別番号ありでクローン数を増やしてみよう
先ほどまでのクローン数は3つ程度でしたが、せっかくなのでこの数を増やしてみようと思います。クローンの数を増やしすぎると処理が重くなって動きが遅くなってしましますので、程々にして100まで増やしてみます。同時に数百程度ならさほど重い処理にもならないと思います。上記までのプログラムを少し手直しして、クローン数100まで増やしたプログラム(プロジェクトの直リンはここから)が以下になります。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
まとめ
今回はクローンごとに識別用の番号を設定するためのローカル変数を使ったテクニックを紹介しました。効率の良いScratchプログラミングを目指すには、今回のテクニックがかなり有効になります。これを機会に、「ローカル変数によるクローンの識別番号をつけるテクニック」をぜひマスターしてみてください。