ここでは、星が流れるアニメーションを作成しましょう。登場する宇宙飛行士リプリーは、マウスカーソルで位置を動かすことができます。
ステップ1
まずは、スケッチの新規プロジェクトを作成して([ファイル]->[新規])、流れ星というプロジェクト名にします。そしてネコのスプライトは使わないので、[スプライトリスト]のSprite1を削除します。
- [スプライトリスト]右下にあるネコのアイコンから[虫メガネ]をクリックして、スプライトライブラリを表示し、検索ボックスに”rip”まで入力すると、宇宙飛行士のRipleyスプライトが表示されるので、クリックしてプロジェクトに読み込みます。
- つづけて同じ要領でStarスプライトをプロジェクトに読み込みます。
- Starsスプライトは3つ欲しいので、追加します。同じ要領でスプライトリストからもう2回読み込む方法もありますが、[スプライトリスト]にあるStarスプライトの右クリックで表示されるコンテキストメニューから[複製]を選ぶことでコピーが作成できます。この方が手早く簡単です。
- スプライトをステージに下図のように並べます。Starは左からStar1、Star2、Star3の順番で並べます。



Star2、Star3という名前は自動的につきます。
ステップ2
宇宙飛行士リプリーのスクリプトを作成します。リプリーは、最初の位置に移った後、マウスカーソルについてくる(追従する)ようにします。リプリーがカーソルの動きについてくるようにするには、リプリーのコードエリアに、[動き]->[(どこかの場所へ)へ行く]コードブロックをドラッグ&ドロップし、[どこかの場所]の右にある矢印をクリックして[マウスのポインター]を選んで、これを[ずっと]コードブロックで囲みます。
- [スクリプトリスト]でRipleyをクリックして、Ripleyスプライトのコードエリアを開きます。
- [イベント]->[緑の旗が押されたとき]ブロックをドラッグ&ドロップします。
- リプリーの最初の位置を決めます。[動き]->[x座標を( )、y座標を( )にする]を(2)に吸着させます。xの( )には-6を、yの( )には-80を入力します。
- [制御]->[(1)秒待つ]ブロックを(3)に吸着させます。
- [制御]->[ずっと]ブロックを(4)に吸着させます。
- [動き]->[(どこかの場所へ)へ行く]ブロックを[ずっと]ブロックのへこみにドラッグ&ドロップし、[どこかの場所]の右にある矢印をクリックして[マウスのポインター]を選びます。
- [緑の旗]ボタンをクリックして、プログラムをテストします。リプリーは最初ステージの真ん中あたりに移動しますが、すぐにマウスカーソルの近くに来ます。カーソルを動かすと、リプリーもそれについて来ます。この動作は[ずっと]ブロックの中で行われているので、プログラムを止めるには赤丸の[停止]ボタンをクリックする必要があります。
[マウスのポインターへ行く]とは?
[マウスのポインターへ行く]ブロックは、その時点でのマウスカーソルの位置(座標)を調べ、そこへスプライトを移動させます。これを[ずっと]ブロックの中で繰り返し実行すると、スプライトがマウスカーソルについてくるという動作になります。
ステップ3
星のスプライトには、星が落下するスクリプトを作成します。
- [スクリプトリスト]のStarスプライトをクリックして、Starのコードエリアを開きます。
- [イベント]->[緑の旗が押されたとき]をドラッグ&ドロップします。
- [動き]->[x座標を( )、y座標を( )にする]をドラッグして、(2)に吸着させます。x座標は-185、y座標は160にします。これはStarスプライトの最初の位置になります。
- Starを(x,y)に落下させるアニメーションには、[動き]->[(1)秒でx座標を( )に、y座標を( )に変える]を使います。Starを下にドラッグすると、[(1)秒でx座標を( )に、y座標を( )に変える]のxとyの値が自動的に変わるので、これを(3)の下に吸着させます。
ここまでで、下図の場合で言うと、星が座標(-185, 160)から(-184, -145)まで、1秒かけて落下するアニメーションが作成できます。
ステップ4
星が画面下に消えたように見せます。これには[見た目]->[隠す]ブロックを使用します。しかし、実際にテストしてみると分かりますが、星は1回は落下して消えるものの、その後現れることはありません。Starスプライトはプログラミングで非表示状態になっているので、これを、次回実行されるときのために、表示状態にしておく必要があります。

そして、何度も繰り返し、星が落下するようにします。これには[ずっと]ブロックが利用できます。

プログラムを実行すると、星は間断なく落ちてくるように見えます。これでは少し忙しすぎるように思える場合には、[(1)秒待つ]ブロックを挿入して、間を持たせることもできます。

ステップ5
次はStar2スプライトのスクリプトを作成しましょう。プログラミングでは多くの場合、同じようなことをするときにはコピーを使います。コピーは手っ取り早く、写し間違いもない効率的な方法です。
スクラッチのスプライトのスクリプトは、スクリプトをドラッグ&ドロップするだけで、コピーできます。
スクリプトのコピー
- [スプライトリスト]でコピー元(Star)のスプライトをクリックして、コードエリアを開きます。
- 一番上にあるコードブロックをつまみ、スクリプト全体をドラッグして、[スプライトリスト]のコピー先(Star2)にドロップします。
- コピー先のスプライトのコードエリアを開いて、コピーできたことを確認します。
Star3スプライトについても同じ作業を行います。
最初の位置と落下先の位置をそれぞれ変える必要があります。Star2は(6, 154)と(6,-159)、Star3は(185, 160)と(181, -143)に変更します。この数値は好みに応じて変えても構いません。
[緑の旗]ボタンをクリックして、プログラムをテストします。3つの星のスプライトが落下します。リプリーもマウスカーソルについてくるので、スクリプトは思ったように動作しているようです。しかし、3つの星はいつも同じタイミングで落下してきます。これを変えてみましょう。
待ち時間をスプライトごとに変えてみることにします。Starは1秒のまま、Star2は2秒、Star3は3秒に変更します。

このようにすると、星が同時に落ちて来ず、リプリーの逃げ場ができます。すると、落ち物ゲーム(落ちゲー)のようなゲーム性が生まれます。

スプライトを理解するコツ
スプライトにはネコや恐竜、宇宙飛行士などさまざまなものがあり、また同じ種類でもStar、Star2のように違う名前を持たせることもできます。
スプライトはスクラッチのステージで動作するキャラクターで、その中に動作を決めるコードブロックと、見た目を決めるコスチューム、サウンドを決める音など、そのスプライト自身用のものを持つことができます。これらはスプライトごとに手を加えることができ、あるネコにはニャーと鳴かせ、別のネコにワンと鳴かせることもできます。

ここまでのプログラムのコードはこのリンクからダウンロードできます。