スプライトをキー操作で動かす

続いて、自動で動かすのではなく、キー操作で動くスプライトを作ってみたいと思います。キーやマウスを操作してキャラクターを動かしたりすることが簡単に実現できます。パソコンでの操作をメインにしていますので、カーソルキーでスプライトが左右に動くプログラムを作ってみたいと思います。

 

先ほど作ったプログラムを保存しておきましょう。「ファイル」から「保存する」をクリックしてください。ファイル名を適当に入力して「OK」をクリックすると保存することができます。

なお、保存する場所を任意の場所に変更することが可能です。上記では、デフォルトの「Scratch Projects」というフォルダに保存をしています。作成したプログラムを再度探しやすいように、保存するフォルダをひとつに決めておくと子供が混乱することが少なくなります。そのフォルダのエイリアス(Mac)やショートカット(Windows)をデスクトップに作っておくと、更に使いやすいものになるでしょう。

 

保存が済みましたら、新規プロジェクトを作成してください。新たにプロジェクトを作成するには、「ファイル」メニューから「新規」をクリックします。

続いて、以下のようにスクリプトを作成してください。今度はまず2つのスクリプトを作成します。

上から順に説明します。

 

「(緑の旗)がクリックされたとき」

緑の旗をクリックするとこのブロックから順にプログラムを実行します。このスクリプト(プログラム)は、緑の旗をクリックした際の処理が書かれています。

 

「表示する」

スプライト(この場合、ネコのスプライト)を表示します。

 

「ずっと」

コの字型のブロックで、この中に置いたブロックを繰り返し実行します。

 

「次のコスチュームにする」(★)

スプライトを切り替える処理をします。

 

「0.5秒待つ」(☆)

0.5秒の間、何もしない意味です。数字を変更することが可能です。小数の入力も可能です。

 

このスクリプトは、実行すると、★から☆までの処理を何度もずっと繰り返すプログラムです。ネコのスプライトを0.5秒おきに手足を動かしているようにアニメーションさせています。次のスクリプトです。

 

「右向き矢印キーが押されたとき」

右カーソルキーが押された場合に実行されるスクリプトです。右向き矢印キーの部分は、クリックするとさまざまなキーに変更が可能です。(ブロックパレットでは、デフォルトでスペースキーになっていますのでスクリプトエリアに置いた後に変更してください。)

 

「X座標を10ずつ変える」

 

スプライトの位置を変更します。これは先ほどの「10歩動かす」の別の記述をしています。

 

スクラッチのステージ上で、位置情報はx,yの二次元座標にて表します。ちょうどステージ中央が座標(0,0)となっています。画面の右上が(x,y)=(240,180)で、左下が(x,y)=(-240,-180)です。

「x座標を10ずつ変える」とは、現在のx座標を10プラスすることです。つまり、ステージの右側に10だけ移動することを意味しています。プログラムを実行してみましょう。ネコがアニメーションしています。そして、右カーソルキーを押すと右側に少しづつ移動します。

 

このままですと、右にしか移動できません。また、ステージからはみ出てしまいますので、以下のようにスクリプトを変更/追加してください。

プログラムを実行してください。カーソルキーでネコが左右に動くようになりました。新たに追加した、「左向き矢印キーが押されたとき」のブロックでは、x座標を-10(マイナス10)しています。これは先ほどの座標では左側に移動することを意味しています。また、画面の端にスプライトがいった際に画面からはみ出ないように、「もし端に着いたら、跳ね返る」のブロックを追加しています。

 

この状態では、ネコは左に移動していても、右側を向いています。不自然に見えますので、下記のように修正してください。

新たに「90度に向ける」と「-90度に向ける」のブロックを追加しました。スプライトは、右側を向いている状態では、画像が90度の方向を向いている状態と定義されています。つまり、左側を向くには、-90度の方向に画像を変更する必要があります。スクラッチでは、上向きを0度として、時計回りにその画像の向きを定義しています。

 

プログラムを実行してください。左向きにネコが移動しているときに、ネコが左向きに表示されるようになりました。もしもうまく表示されない場合、ブロックに間違いはないか、ブロックのパラメーター(数値)が間違っていないか確認してください。

ここでは触れませんが、上下に移動する際には、x座標ではなく、y座標を操作します。ゲームだと、自身のキャラクターの移動を実装する際によく使われます。

あわせて読みたい