【Scratch3基礎講座】 スプライト・クローンの基本的な利用方法


2020/09/07

本ブログ記事でクローンを使ったスコア表示のプログラムで、スプライトのクローンを利用しました。

たくさんのスプライトを動かすアクションゲームなどを作成したい場合、敵や障害物、アイテムなどを効率よく出現させるためにはクローンの使い方に慣れておく必要があります。

ただし、クローンはスクラッチのプログラミングの中でも、一番分かりにくい機能のひとつであり、取り扱いには注意が必要です。

この記事では、クローンの基本的な使い方とプログラミングする上での注意点を特集します。


👇プログラミング教室をお探しの人必見!

👇スクラッチの教科書をお探しの人必見!

材料の下準備

今回はデフォルトの猫のスプライト・スプライト1に、以下のように4つのコスチュームを追加して、名前を1,2,3,4にしておきます。

合同会社タコスキングダム|タコキンのPスクール


単純なクローン

まずは、単純なクローンを1回だけやってみましょう。

下の図のようなプログラミングブロックを組んで、
🚩ボタンを押すと、猫のスプライトのクローンが作成されます。ただし、この場合、おなじ座標に複製されるため、クローンを確認するにはマウスで掴んでドラッグすると重なっているのが確認できます。

合同会社タコスキングダム|タコキンのPスクール

ここで注目すべきは、画像の描画される順序です。

デフォルトでは、クローンはスプライトの裏側に複製されていると思います。

次に、クローンを元のスプライトとは離して作成してみます。

合同会社タコスキングダム|タコキンのPスクール

クローンだけを移動したい場合、特別なイベントである
クローンされたときイベントを利用します。

この
クローンされたときブロックを使う場合の注意点として、その時に複製されるひとつのクローンだけに影響を与えるブロックです。つまり、対象のクローン以外の他のスプライトやクローン、背景などの値を変えたい場合には、このクローンされたときブロックに入れてはいけません。

例えば、元のスプライトを2番目のコスチュームして複製したい場合を考えると、以下のようなプログラミングブロックでは、
クローンされたときブロックにコスチュームを変えるブロックを入れてしまったために、クローンだけのコスチュームが変わってしまいます。

合同会社タコスキングダム|タコキンのPスクール

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

合同会社タコスキングダム|タコキンのPスクール

また複製のタイミングにも注意が必要です。

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

合同会社タコスキングダム|タコキンのPスクール

以上のことから、クローンを使う際には、
クローンされたときイベントの中身と、クローンするブロックを入れる順番に注意を払う必要があります。


クローンとローカル変数の組み合わせ

ちょっとだけクローンの数を増やして使ってみます。

変数を使ってクローンの横への移動量をコントロールするために、今回は
ヨコ_というローカル変数を追加します。

合同会社タコスキングダム|タコキンのPスクール

まずは上手くいかない例からやってみましょう。

下のプログラムは4回分のクローンを生成して、そのたびに横方向に+100ずつ複製が移動するように見えるのですが、

合同会社タコスキングダム|タコキンのPスクール

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

合同会社タコスキングダム|タコキンのPスクール

なぜクローンが移動しなかったのというと、先程も触れたように、
クローンされたときイベントブロックはそのときクローンされたスプライトだけに影響を与える特別なブロックですので、ローカル変数ヨコ_の値に影響を与えることなく処理されているからです。つまり、クローンされたときイベントブロックには、変数は読み取り専用として扱われ、値を保持しておくことができません。

ということで、ローカル変数のブロックの場所をもう少し検討します。

まずは変数の演算の場所をクローンする前に入れてみます。

合同会社タコスキングダム|タコキンのPスクール

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

合同会社タコスキングダム|タコキンのPスクール

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

合同会社タコスキングダム|タコキンのPスクール

適当な名前でいいので、ブロック名は
ふくせいとうごき、引数はコスチュームばんごうとでもしておきます。

合同会社タコスキングダム|タコキンのPスクール

引数つきの定義ブロックを上手く使うと、長めのブロックもすこし短くスッキリ書ける場合があります。


👇プログラミング教室をお探しの人必見!

👇スクラッチの教科書をお探しの人必見!

まとめ

スプライトのクローンは便利ですが、利用するときに扱いをよく理解している必要があります。

クローンが何か意図としない動きをしたら、
クローンしたときイベントブロックの中身をよく確認してみると良いかもしれません。