【スクラッチ(Scratch)】クローンを使ってみよう!

この記事では、スクラッチ(Scratch)のクローンの使い方を紹介します。

クローンは、スプライトをコピーすることができる機能。

例えば、シューティングゲームで弾を連続して打ちたいときに、同じスプライトをたくさん作るのは大変ですね。

しかしクローン機能を使えば、ブロックひとつでスプライトを簡単にコピーできるので便利です。

という方向け。

クローンの機能が分かりやすい、かんたんなプログラムを例にあげながら紹介します。

 

スクラッチがはじめての方は、下の記事からごらんください。

 

スポンサーリンク

クローンとは

クローンのイメージ

クローンとは、プログラムを使ってスプライトをコピーすることです。または、コピーされたスプライトのことをクローンと呼びます。

クローンはオリジナルのスプライトの状態(座標、表示/非表示など)を引き継ぎながら別のモノとして存在します。

プログラムも引き継がれます。

「クローン」と「スタンプ」のちがい
ペン拡張機能にあるスタンプは、選択中のスプライトと同じ見た目の画像をステージに貼り付ける機能です。
一見クローンと似ていますが、貼り付けられた画像はスプライトではないので、プログラムで動きをつけることができません。

 

クローンに関するブロック

クローンに関するブロック

クローンに関するブロックは3種類。制御のカテゴリにあります。

  • 自分自身▼のクローンを作る
  • クローンされたとき
  • このクローンを削除する

 

自分自身▼のクローンを作る

指定したスプライトのクローンを作成するブロックです。

自分自身の他に、別のスプライトのクローンを作ることもできます。

同時に存在できるクローンの数はプロジェクト全体で300個まで。300個を超えた場合、クローンは作成されません。

 

クローンされたとき

クローンが作成されると、「クローンされたとき」下に組み込まれた命令が実行されます

 

このクローンを削除する

クローンを消すブロックです。

また、プログラムを停止するとすべてのクローンが消えます。

ひとつずつ削除する場合は「このクローンを削除する」ブロックを使いましょう。

プログラムを停止する方法は下のとおりです。

  • 緑のハタ
  • 停止ボタン
  • 「すべてを止める」ブロック(制御カテゴリ)

 

クローンを使った簡単なプログラム

クローンを使ったプログラム

クローンに関するブロックを使ったプログラムを作ってみました。

変数「色の効果」を使ってクローンのネコの色を変えています。

  • 緑のハタをおされたとき、ネコのクローンを3つ作る。
  • ハートのスプライトがおされたとき、ネコのクローンを作る。
  • クローンされたとき、色を変えてどこかの場所へいく。
  • ネコのクローンがおされたとき、そのクローンを削除する。

 

スポンサーリンク

クローンとイベントブロック

クローンは、スプライトの「緑のハタが押されたとき」以外のイベントブロックに反応します。

例えばメッセージを送った場合、オリジナルとクローンどちらも「メッセージを受け取ったとき」ブロックの下に組み込まれた命令が実行されます。

クローンとイベントブロック

 

変数を使い分ける

変数を追加する画面

そもそも変数って何?という方は、下の記事からごらんください。

 

変数には3つのタイプがあり、変数を作成する時にタイプを指定できます。

  • すべてのスプライトで使えるグローバル変数
  • このスプライトだけで使えるローカル変数
  • 世界中で共有できるクラウド変数

 

今回は、グローバル変数ローカル変数について説明します。

それぞれの変数のイメージは下の画像のような感じです。

グローバル変数とローカル変数のちがい

では、プログラムを見ながらちがいをみていきましょう。

 

すべてのスプライト用(グローバル変数)

グローバル変数は、ステージとすべてのスプライトが使うことのできる変数です。

グローバル変数を使ったプログラム

画像のプログラムにある変数「色の効果」はグローバル変数です。

クローンが作成されたときに40ずつ足され、アヒルのスプライトがおされたとき「色の効果」の値を表示します。

緑のハタをおしてクローンを3つ作った後、アヒルをおして「色の効果」を表示させたら、すべてのクローンで120が表示されました。

これは、すべてのスプライトが同じ変数「色の効果」を見ているからです。

 

このスプライトのみ(ローカル変数)

ローカル変数は、このスプライトだけが変えることができる変数です。

クローンを作ったとき、オリジナルのローカル変数の値が引き継がれますが、その後クローンのローカル変数を変更してもオリジナルのローカル変数が変わることはありません。

ローカル変数を使ったプログラム

画像のプログラムにある変数「数字」はローカル変数です。

クローンが作成されたときに200~300までのランダムな数字を設定して、アヒルのスプライトがおされたとき「数字」の値を表示します。

緑のハタをおしてクローンを3つ作った後、アヒルをおして「数字」を表示させたらバラバラな数字が表示されました。

これは、それぞれのスプライトで持っている固有の変数「数字」を見ているからです。

 

オリジナルとクローンの動きを分ける

オリジナルとクローンの動きを分けたい場合、ローカル変数を使ってオリジナルまたはクローンのどちらか区別させる方法があります。

オリジナルとクローンの動きを分ける

「緑のハタがおされたとき」は、一度すべてのクローンが削除されるためオリジナルのスプライトのみ実行されます。

また、「クローンされたとき」はクローンのみが実行されます。

この特性を利用して、ローカル変数(スプライト)に区別がつくような文字列や数字(オリジナル、クローン)を入れておいて、ローカル変数の値によってオリジナルとクローンの処理を分けるようにしています。

 

スポンサーリンク

クローンを使って雪の結晶を降らせてみた

クローン機能を使って雪の結晶を降らせるプログラムを作ってみました。

 

プログラムは下の画像のとおりです。

雪の結晶を降らせるプログラム

オリジナルのスプライトはクローンを作る処理のみで動くことがないので、「隠す」ブロックを使って見えなくしました。

作成したクローンは「クローンされたとき」「表示する」ブロックで表示させています。

「隠す」ブロックと「表示する」ブロックは見た目カテゴリにあります。

 

まとめ

クローンとは、プログラムを使ってスプライトをコピーすることです。

また、コピーされたスプライトのことをクローンと呼びます。

クローンを自由に使いこなせるようになるには大変そうだと感じるかもしれません。

まずは本などにのっているゲームをマネして作ってみて、どんなふうにプログラムが動くのか
トレース(命令を順番にたどって状態を確認すること)してみるといいと思います。

 

タイトルとURLをコピーしました