【Scratch入門】スプライト・クローンの基本的な利用方法
※ 当ページには【広告/PR】を含む場合があります。
2020/09/07
本ブログ記事の内容では、
たくさんのスプライトを動かすアクションゲームなどを作成したい場合、敵や障害物、アイテムなどを効率よく出現させるためにはクローンの使い方に慣れておく必要があります。
ただし、クローンはScratchのプログラミングの中でも、一番分かりにくい機能のひとつであり、取り扱いには注意が必要です。
この記事では、クローンの基本的な使い方とプログラミングする上での注意点を特集します。
材料の下準備
今回はデフォルトの猫のスプライト・
スプライト1
1,2,3,4

単純なクローン
まずは、単純なクローンを1回だけやってみましょう。
下の図のようなプログラミングブロックを組んで、
🚩

ここで注目すべきは、画像の描画される順序です。
デフォルトでは、クローンはスプライトの裏側に複製されていると思います。
次に、クローンを元のスプライトとは離して作成してみます。

クローンだけを移動したい場合、特別なイベントである
クローンされたとき
この
クローンされたとき
クローンされたとき
例えば、元のスプライトを2番目のコスチュームして複製したい場合を考えると、以下のようなプログラミングブロックでは、
クローンされたとき

この場合、元のスプライトを変えたい場合には、スクリプト全体に影響を与えるブロックへ入れる必要があります。

また複製のタイミングにも注意が必要です。
クローンは元のスプライトの状態をそのままコピーするので、この例でいうと、クローンを作成してから元のスプライトのコスチュームを変えてしまっているので、クローンのコスチュームは更新されず古いコスチュームのままになってしまいます。

以上のことから、クローンを使う際には、
クローンされたとき
クローンとローカル変数の組み合わせ
ちょっとだけクローンの数を増やして使ってみます。
変数を使ってクローンの横への移動量をコントロールするために、今回は
ヨコ_

まずは上手くいかない例からやってみましょう。
下のプログラムは4回分のクローンを生成して、そのたびに横方向に+100ずつ複製が移動するように見えるのですが、

結果は、クローンたちがおなじ座標になって団子の状態で表示されてしまいます。

なぜクローンが移動しなかったのというと、先程も触れたように、
クローンされたとき
ヨコ_
クローンされたとき
ということで、ローカル変数のブロックの場所をもう少し検討します。
まずは変数の演算の場所をクローンする前に入れてみます。

すると期待通りに、クローンの座標が重ならないようになりました。

すこしプログラミングブロックが長くなってくると読みにくいので、引数つきの定義ブロックを利用して、繰り返しのブロック処理のパターンをパッケージ化してみます。

適当な名前でいいので、ブロック名は
ふくせいとうごき
コスチュームばんごう

引数つきの定義ブロックを上手く使うと、長めのブロックもすこし短くスッキリ書ける場合があります。
まとめ
スプライトのクローンは便利ですが、利用するときに扱いをよく理解している必要があります。
クローンが何か意図としない動きをしたら、
クローンしたとき