【Scratch入門〜中級編】他のスプライトからクローンをして使う方法
※ 当ページには【広告/PR】を含む場合があります。
2020/10/02
2022/08/22
Scratchにおけるクローンのちょっと進んだ使い方として、スプライトが
「自分自身をクローン(複製)する」
自分以外のスプライトをクローンとして扱えることで、より複雑なゲーム性を創りだすことが可能になります。
今回は他のスプライトのクローンでどのようなことができるのか、簡単な実例を挙げながら解説してみます。
他のスプライトをクローンするメリット
まずは実際のプログラム例をみてみましょう。
スプライトでクローンを利用する時、ほとんどの場合には
自分自身

他のスプライトのクローンを呼び出すことがどんな時に便利かというと、例えば呼び出し元のスプライトは固定で動かないけれども、クローンして使うスプライトは移動して動き回るようなプログラムを作る場合などがあります。
今回解説するプログラムでいうと、たこのスプライトが中央の緑のボタンに触れたとき、ボタンのスプライトはさかなのスプライトをクローンして画面に追加しています。

プログラミングの中身を見たとき、さかなが泳ぐロジックと、さかなをクローンするロジックが上手く分離されていることに注目してください。
また複数のスプライトのクローンを作成するイベントがある場合にも、1つのスプライトが司令塔となってクローンを管理する・まとめると、プログラミングの見通しがよりスッキリとすると思います。
他のスプライトのクローンを効率よく管理できるようになれば、より複雑なゲームも作りやすくなりますので、今のうちに覚えておいて損はないテクニックです。
他のスプライトをクローンする手順
早速ブロックプログラミングで、他のスプライトを用いたクローンの作成の方法をみていきましょう。
以前
自分自身
この記事の中で
自分自身
ローカル変数
他のスプライト
というわけで、クローンする側される側の二つのスプライトの間で共通の値を使えるように、グローバル変数(普通の変数)を利用して情報を橋渡しするやり方をします。
当然ながらグローバル変数は、全てのスプライトからも丸見えになってしまうので、何かの不手際で関係のないスプライトで使われて値を変更されてしまうと、最悪プログラムが思うように動かなくなってしまう恐れがあります。
Scratchのプログラミングにおいて、グローバル変数の絡むバグはとても分かりにくいので、分かりやすい名前を付けるなど、使う際にはひと工夫入れておきましょう。
スプライトの準備
まずは素材(スプライト・変数)作りからやりましょう。
今回のスプライトは
たこ
ボタン
さかな

たこのスプライト
まずは泳ぐような動きをもたせた
たこ
今回はこのたこのスプライトが、他のスプライト(とそのクローン)に衝突する際のイベントの部分のみ解説します。

まずプログラミングブロックを管理しやすいように
さかなにふれた
ボタンにふれた
このブロックには、
調べる
〇〇に触れた
さかなさわったを送る
ボタンさわったを送る
この定義ブロックをたこの動きを行っている処理ループの中に登録したらたこのスプライト側の準備が完了です。
ボタンのスプライト
こちらはたこが触れてきたら、その都度、さかなのスプライトのクローンを増やす処理を行います。
まずはゲーム開始時の初期化の処理を作ります。
他のスプライトをクローンするときの橋渡し役のグローバル変数
ばんごう

🚩
ばんごう
ばんごう

次にたこがボタンに触ったときに送られてくる
ボタンさわった
ボタン側がたこに触れている状態で、
ばんごう

さかなのスプライト
まずは初期化処理ですが、グローバル変数では常に書き換わるので、先ほどのグローバル変数
ばんごう
そのためクローンに裏番号を持たせるためのローカル変数
ばんごう_

他のスプライトをクローンする場合にも各クローンを思い通りの処理をさせようとすると、もっとも重要なプログラミングのポイントは
クローンされたとき

まずグローバル変数
ばんごう
ばんごう_
また、スプライトの動きなどを定義して各クローンにも適用させる際にもやはり
クローンされたとき
最後にたこがさかなのスプライトに触ったときに送られる
さかなさわった
たこがどのクローンに衝突したのかを裏番号で判定するテクニックについては、

ここでは、たこが触ったときのクローンが消滅するだけでは少々つまらないので、
さかなはんべつ
まとめ
今回はクローンを使うスプライト側から、別のスプライトをクローンを作る方法を解説しました。
このテクニックを使うと、クローンするロジックとスプライトを動かすロジックが分離できるようになりますので、より効率的なワンランク上のプログラミングが習得できるようになるでしょう。