スクラッチの中でよく使われるクローンですが
クローンを作成するスクリプトとスプライトの動きについて
おさらいをしていきましょう。
自分自身のクローンの作り方
一般的なクローンの作り方
クローンを使う場合はオリジナルのクローンを隠して
クローンだけを表示して使う事が一般的です。
画像のように3匹のネコのクローンを並べて表示する場合、
”旗が押されたとき”のブロックの下で”隠す”のブロックをいれてオリジナルのスプライトを消し、
クローン数の3回だけ”自分自身のクローンを作る”を繰り返し、クローンが重ならないように、オリジナルの位置を変えます。
”クローンされたとき”のブロックの下で、クローンされたスプライトを”表示”します。
理解をしておいて欲しいのは、
クローンが作られる場所は、元になるスプライトが存在する場所となる
クローンの元になるスプライトが”隠す”で見えなくても、”クローンを作る”の命令があるとクローンも作る
オリジナルのスクリプトでクローンを作るとオリジナルのクローンができる
クローンのスクリプトでクローンを作るとクローンのクローンができる
イベントのスクリプトでクローンを作ると、オリジナルとクローンの両方のクローンができる(隠しているクローンがある時は画面がクローンで一杯になるよ)
オリジナルのネコを隠さないでゆっくりと移動させながら、
クローンを3匹作る様子を下の動画で説明します。
クローンをいくつ、どこに作る
クローンを作る数
クローンを作る数は、”○○のクローンを作る”を
”ずっと”や”○○回繰り返す”のブロックで囲みます。
但し、”ずっと”のブロックで囲む場合は、
”○○秒待つ”というブロックを入れるのが普通です。
そうでないと、スゴイ数のクローンが出て、プログラムが動かなくなりますよ。
○○秒と○○回のところに”〇から〇までの乱数”を入れる事も良くあります。
クローンを出現させる場所を指定する方法は、
予め決まった場所にクローンを出現させたい場合は
その場所にオリジナルを移動させてからクローンを作り
”表示”させます。
シューティングゲームの弾などをクローンする場合は、
クローンされたあとに”○○へ行く” というブロックで
弾を発射するスプライトの位置を指定します。
敵キャラは右端から左に移動してきて欲しい場合は
X座標を240、Y座標は乱数としたら良いですね。
オリジナルとクローンのスプライトへの命令
先ほどの動画でも説明をしたように、”クローンを作る”のブロックを
どこに置くかで、どのスプライトのクローンがどんな風にできるかが変わってきます。
基本を理解してもらった上で、ちょっと違うクローンの作り方をご紹介します。
”○○のクローンを作る”のブロック
クローンを作る方法は、”自分自身のクローン”を作るだけでなく、
”別スプライトのクローンを作る”ことが出来ます。
このケースはAbbyというスプライトのスクリプトに、
”スプライト1(ネコ)のクローンを作る”というブロックをいれています。
どうして、そうするのでしょうか?
ネコのオリジナルだけをクローンしたい場合は、その方が簡単かもしれないね
”自分自身のクローンを作る”のブロックが、イベント(”旗が押されたとき”のブロックは例外)
のブロックの下に置かれると、Abbyの周りにいるクローンのクローンができてしまうので、
たちまち画面はクローンネコでいっぱいになってしまいます。
そのような状況にならないように、クローンを作るブロックをどのスプライトに入れるかを
考えてみてください。
変数でクローンのクローンを作るのを禁止する
ここまで、クローンをどうやって作るのか、または大量のクローンを作りださないための、
基本的なスクリプトの組み方を説明をしてきました。
残念ながら、それだけではダメな時もあるんだよね。
実は基本通りにやっても、プログラムの順番や処理時間の関係なのか、
どうも思い通りの結果にならないことがあります。
そんな時は、それぞれのスプライトにクローンを”する” ”しない” を
グローバル変数で区別をしておくのが良いです。
”クローン”を ”yes” と “no” に区別して、”yes” のスプライトの場合にはクローンを作るようにしてあります。
上の画像の例では、オリジナルのスプライトの変数は”yes”にしていて
クローンされたスプライトの変数は”no”とすることで
オリジナルのスプライトのクローンしか作られないようにしています。
オリジナルのスプライトのクローンだけが出来るように変わりました。