スクラッチ(Scratch3.0)のクローンは、見た目や動作が同じスプライトを何体も出現させるときに便利な機能です。
- クローンはオリジナルの状態を受け継ぐ
- 受け継いだ状態はクローンごとに変更できる
- 同時に作成できるクローンの数は最大300個
- クローンからクローンを作成することもできる
- プログラムが動作を停止するとすべてのクローンが消える
- クローンは削除できるが、オリジナルは削除できない
スクラッチのクローンはスプライトのコピー機能
スクラッチのクローンは、スプライトをコピーすることができる機能です。
元のスプライトを「オリジナル」、コピーしたスプライトを「クローン」といいます。
クローンは、オリジナルのスプライトの状態やプログラムを引き継ぎながらも、別の個体として存在します。
クローンはプログラムが実行している間だけ動き、表示されますが、プログラムが止まるとすべて消えてしまいます。
クローン機能の使い道(例)
- 何度も出てくる敵のキャラクター
- ブロックなどの障害物
- 雪や星
- シャボン玉
クローンする数には制限や限界がある
ScratchWikiJapanにも記載されていますが、Scratch3.0では、同時に存在できるクローンの数はプロジェクト全体で300個です。
300個を超えた場合、クローンは作成されません。
また、300を超えると動きが重くなってきます。
動かしてみて重たいなと感じたら、クローンを削除たり、クローンの出現タイミングをずらしたりして数を減らしましょう。
「クローンの制限数300」は本当か確かめる
「同時に存在できるクローンの数はプロジェクト全体で300個」が本当か確かめてみましょう。
確かめたいことは次の2つ。
- 同時に存在できるクローンの数は300
- プロジェクト全体で300
プログラム上は次の動きをします。
- 「スプライト1つ」を押す
- ねこが350回クローンをつくる
- 「スプライト2つ」を押す
- ねことトリが160回ずつ(計320回)クローンをつくる
しかし、結果はどちらのボタンも、300を超えるとクローンが作られません。
クローン10個ごとに緑、100個ごとに青に色を変えていますので、数えてみてください。
開発中は稀にクローンが302個生成されるのですが、プロジェクト公開後はクローン数は300となりました。
この結果から、「確実にクローンできる数は300」と言えます。
それでは、具体的にクローン機能を使ってみましょう。
クローンブロックの使い方
クローンを作るときに利用するブロックは、【制御】カテゴリの中にある次の3つです。
- 自分自身のクローンをつくる
- クローンされたとき
- このクローンを削除する
「自分自身のクローンを作る」ブロック
「()のクローンを作る」ブロックは、()で指定したスプライトのクローンを作成するブロックです。
「自分自身」を他のスプライト名に変えると、別のスプライトのクローンを作ることもできます。
「クローンされたとき」ブロック
クローンが作成されると、「クローンされたとき」の下に書かれた命令が実行されます。
「このクローンを削除する」ブロック
削除する場合は「このクローンを削除する」ブロックを使いましょう。
一緒に使うブロックによって、クローン毎に削除することも、一括で削除することも可能です。
コスチュームなどの状態を変えて、オリジナルとクローンを区別する
クローンはオリジナルの状態を受け継ぎます。
- コスチューム
- 大きさ
- 向き
- 座標
- 表示/非表示のステータス
オリジナルとクローンを区別するために、コスチュームを変更してみましょう。
オリジナルと「同じ」コスチュームでクローンを使う
オリジナルと同じコスチュームのままクローンを使う場合は、変更する必要ありません。
オリジナルと「違う」コスチュームでクローンを使う
オリジナルとは違うコスチュームでクローンを使う場合は、次のブロックを使って変更します。
- 【見た目】「コスチュームを()にする」ブロック
- 【見た目】「次のコスチュームにする」ブロック
その他にも、大きさや向き、XY座標を変えて区別することもできますね。
クローンのXY座標を指定する
クローンはオリジナルのスプライトの状態を引き継ぎます。
座標を変えない場合、オリジナルの上にクローンが作成されて、画面上ではクローンが増えたように見えません。
クローンをつくったら、XY座標を指定し、位置を変更してあげると良いでしょう。
次のように「動き」カテゴリのブロックを使うと、位置を動かすことができます。
オリジナルとクローンを制御する(表示する、隠す)
クローンを使うとき、オリジナルを隠して使わないほうがコードが簡単になることがあります。
作りたい動きに合わせて、使い分けられるようになりましょう。
- オリジナルとクローンの区別をする場合→オリジナルを表示する
- 画面上からストライプを0にする場合→オリジナルを隠す
次のように、【見た目】「隠す」ブロックの有無によって実行結果が変わりますので、参考にしてください。
クローンからクローンを作る
プログラムによってはクローンからクローンを作りたいこともありますよね。
逆に、意図せずクローンがたくさん作られてしまう場合もあります。
クローンからクローンを作る条件
次のブロックのように、全体に影響する(特定のクローンに限定できない)条件と一緒に「自分自身のクローンを作る」ブロック使うことで、クローンからクローンが作られます。
- 【イベント】「()キーが押されたとき」ブロック
- 【イベント】「背景が()になったとき」ブロック
- 【イベント】「()を受け取ったとき」ブロック
次のプログラムで動きを見ていきます。
スペースキーを押した結果を確認すると、オリジナルからクローンが作られています。
もう一度スペースキーを押してから結果を確認すると、オリジナルからクローンが作られると同時に、1度目に作られたクローンからもクローンが作られています。
オリジナルからのみクローンを作る条件
次のブロックのように、全体に影響する(特定のクローンに限定できない)条件と一緒に「()のクローンを作る」ブロックで特定のスプライトを指定して使うことで、オリジナルからのみクローンが作られます。
- 【イベント】「()キーが押されたとき」ブロック
- 【イベント】「このスプライトが押されたとき」ブロック
- 【イベント】「背景が()になったとき」ブロック
- 【イベント】「()を受け取ったとき」ブロック
次のプログラムで動きを見ていきます。
※今回は新しく「クローンを作る」ボタンを用意しましたが、「クローンからクローンを作るための条件」と同じようにスペースキーを押したときにクローンを作る場合は、背景ステージに置くと良いです。
「クローンを作る」ボタンを押した結果を確認すると、オリジナルからクローンが作られています。
もう一度「クローンを作る」ボタンを押してから結果を確認すると、作られているクローンの数は1つだけ(オリジナルから作られたクローンのみ)です。
クローンを消す
クローン消すためには、「隠す」または「削除する」方法があります。
隠す
同じクローンを使う必要がある場合は「隠す」を使います。
ただし、「隠す」を使うとクローンは見えなくなりますが、実は画面内で動き続けています。
上限の300を超えると、新しいクローンを作れなくなったり、動きが重くなったりしますので、使わなくなったクローンは必ず「削除」しましょう。
削除する方法は、次の4つです。
- 緑のハタ
- 停止ボタン
- 【制御】「すべてを止める」ブロック
- 【制御】「このクローンを削除する」ブロック
一括削除する
- 緑のハタ
- 停止ボタン
- 【制御】「すべてを止める」ブロック
- 【制御】「このクローンを削除する」ブロック
「このクローンを削除する」ブロックは、次のブロックのように、全体に影響する(特定のクローンに限定できない)条件と一緒に使うことで、一括削除できます。
- 【イベント】「()キーが押されたとき」ブロック
- 【イベント】「背景が()になったとき」ブロック
- 【イベント】「()を受け取ったとき」ブロック
個別削除する
- 【制御】「このクローンを削除する」ブロック
「このクローンを削除する」ブロックは、次のブロックのように、特定のクローンに限定できる条件と一緒に使うことで、そのクローンのみ削除できます。
- 【イベント】「このスプライトが押されたとき」ブロック
なお、このブロックを使っても、オリジナルを削除することはできません。
オリジナルを消す場合は、【見た目】「隠す」ブロックを使ってください。
機能比較:スプライトのコピーとクローンとスタンプ
見た目が同じスプライトを画面に複数出現させる方法としては、次の3つの方法があります。
- スプライトのコピー(スプライトをコピーして、必要な数だけ複数用意する)
- クローン
- スタンプ
スタンプは、拡張機能の「ペン」を選ぶと利用できる機能です。
各々特徴がありますので、最適な機能を利用しましょう。
スプライトの複製 | クローン | スタンプ | |
---|---|---|---|
生成タイミング | スプライトの複製時 ※プロジェクト実行中に新しく作ることはできない | 「()のクローンをつくる」ブロックの実行時 | 「スタンプ」ブロックの実行時 |
スクリプトの作成 | スクリプトを好きなだけ作れる、自由度が高い | 「クローンされたとき」ブロックで始まるスクリプトによって、スプライトと同様に表示位置や形、大きさなどいろいろなことを制御できるデータ | 動作なし 絵の一部なので、そのスタンプの絵だけを変えたり動かすことはできない |
スクリプトの変更 | 数が多くなると、スプライト毎に変更するため、時間がかかる | 数が多くなっても、オリジナルのスプライト1つだけの変更で済む | 数が多くなっても、オリジナルのスプライト1つだけの変更で済む |
数の上限 | (※) | 300 | 無限 |
プログラムのファイルサイズ | 大きくなる | スプライトの複製と比較すると小さい | スプライトの複製と比較すると小さい |
(※)公式の明記なし(スクラッチで共有できるプロジェクトのサイズが50MB未満なので、公開する場合は、それを目安にすると良いでしょう)