【Scratch】<入門編>2-3 ねこを動かそう!その2(矢印キーでスプライトを動かす/当たり判定)

・矢印キーでスプライトを動かす方法(ブロック「~キーが押された」「もし~なら」)
・当たり判定(「~に触れた」)
・背景/スプライトの追加/コスチューム
こんにちは、Anksです。今回もみなさまよろしくおねがいします。
前回 <入門編>2-2 ねこを動かそう!その1(動き/X座標とY座標/向き/ずっと)に引き続き、スプライトの動かし方を中心に学んでいきます!
今回は、先に出来上がりのイメージを見ていただきたいと思います!
下の画面の旗のボタンをクリックしてください。
ねこがひよこのお家に遊びに来たイメージで作っています。
キーボードの矢印キーで、ねこが上下左右に動いているのがわかりますか?
ひよこのところまで行くと、あいさつをしてくれますね。
今回は、このプロジェクトを実際に作っていきましょう!

○背景とスプライトの追加

今回の作品では、背景を設定します。
スクラッチでは、あらかじめ多くの背景が用意されているので、今回はそこから選んでいきます。

右下のほうの「ステージ」と書いてある欄の、【Scratch】背景選択ボタンマークをクリックしてください。

【Scratch】スクラッチ 背景選択の説明画像

すると、背景の一覧が表示されるので、「Bedroom 1」を選んでみましょう!

【Scratch】スクラッチ 背景一覧の説明画像

↓↓選択後

【Scratch】スクラッチ 背景選択後の画像

無事、後ろに「Bedroom 1」の背景が表示されましたでしょうか?
ねこは今回お客さんなので、ねこの位置を左下に変えてみましょう。

位置は、スプライトをドラッグ&ドロップするか座標の数値を変えると移動させることができます。

【Scratch】スクラッチ スプライトの位置の変え方

だいたいの位置をドラッグ&ドロップで決めて、座標の数字で微調整すると良いと思います。
X=-170、Y=-110に設定してみました。(スプライト名も「ねこ」に変えてあります)

位置を決めたら、初期化の設定も合わせてしておきましょう。(下図)

【Scratch】スクラッチ 初期化の設定

Anks
全角だと数値と認識されないので、数値の入力は必ず半角で行ってください。
次に、ひよこのスプライトを追加します。
背景と同じように、スクラッチではあらかじめ多くのスプライト画像が用意されています。
追加の仕方は、スプライト欄の右下部の【Scratch】スプライト追加ボタンボタンをクリックです。
【Scratch】スクラッチ スプライトの追加方法
クリックすると、スプライトの一覧が表示されるので、「動物」タブから「Chick」を選択します。
【Scratch】スクラッチ スプライト一覧の説明
↓↓選択後
【Scratch】スクラッチ スプライトの追加後の画像
これで、スプライトが追加され、ひよこ(Chick)のスプライトが選択された状態になっています。
真ん中の、ブロックを配置する欄の上部のイラストも、ひよこに変わっているのに気づきましたか?
スクラッチでは、スプライトごとにブロックの配置をしていきます。
ひよこのスプライトを選択した状態でブロックを配置(コードを使用)をしたりすると、
ブロックに別のスプライト名の記載などが無い場合は、
ひよこに関するコードを使ったことになる、というわけです。
ここで一度、ひよこの位置や向きを調整しておきましょう。
下の図のように、(スプライト名=ひよこ、X=30、Y=-15、向き=-90°、回転を左右のみ)と設定しました。
【Scratch】スクラッチ ひよこの位置の調整  【Scratch】スクラッチ ひよこの回転を左右のみに
ここまでできたら、次は、ねこが矢印キーで動くようにしていきます!

○矢印キーでスプライトを動かす方法

まず、スプライト欄でねこをクリックして、スプライトの選択を切り替えましょう。

そして、必要なブロックを配置していくわけですが、
今回も、矢印キーを押していると、ねこには何度も動いてほしいですよね?

そこで、まずは「ずっと」のブロックを配置しましょう。
「ずっと」の中に、矢印キーを押したら動くコードを作っていきますよ。

【Scratch】スクラッチ ずっとブロックともし~ならブロック
矢印キーが押されたときに、ねこが動く、はブロックでどう表現したらよいでしょうか?
ここで、
もし何かが起きたなら、ということを表現したいときに必ず思い浮かべてほしいのが、
「もし~なら」ブロックです。
【Scratch】スクラッチ もし~ならブロックの説明
今回は、このブロックを使って、
Scratch】スクラッチ もし右矢印キーが押されたならX座標を10ずつ変える
このように、
もし右向き矢印キーが押されたなら、ねこが右に移動する(=X座標を10増やす)ようにして、
「ずっと」ブロックの中に配置します。
なお、「~キーが押されたとき」のブロックは、「調べる」欄の中にあります。
プルダウンから使いたいキーを選ぶことができますよ。
【Scratch】スクラッチ ~キーが押されたときの説明
ここまでで、ブロックの配置は以下のようになっていると思います。
【Scratch】スクラッチ 右向き矢印設定後
あとは同じように、
前回のチャプターのX座標とY座標の図も確認しながら、
左向き矢印の場合、上向き矢印の場合、下向き矢印の場合をそれぞれ以下のように作れば完成です。
【Scratch】スクラッチ 矢印でスプライトが動くコード
(マイナスの有無、XとYの違いに注意してください。座標は半角入力です。)
Anks
まとまったブロックの上で「右クリック」→「複製」をすると、ブロックをひとかたまりで複製することができますよ。同じようなまとまりのブロックを使いたいときに便利です!
ここまできたら、旗のボタンを押して、ねこが上下左右キーで自由に移動できるかどうか確かめてみましょう!
うまくいきましたでしょうか?
動かない場合は、再度マイナスの有無や、XとYの違い、数値が半角入力されているか、などを確認してください。
あとは、ひよこがねこに触れたときにあいさつするようにすれば完成です!

○当たり判定の方法(「~に触れたとき」)

「当たり判定」という言葉に馴染みはありますか?
当たり判定とは、ゲームの中でキャラクターや物体同士がぶつかったかどうかの判定のことです。
【Scratch】スクラッチ スプライトの当たり判定
今回は、ひよことねこの当たり判定を組み込んで、触れているときにはひよこが口を開いて「いらっしゃい!」と言うようにしますよ。
動作をするのがひよこになるので、まずはスプライト選択をひよこに切り替えて、ブロックを配置していきましょう!
ねこが来るたびに判定されるようにするので、まず置くのは「ずっと」ブロックですね。
【Scratch】スクラッチ ひよこのブロック説明
ねこが来たなら口を開いて「いらっしゃい!」と言うにはどうすれば良いでしょうか?
ここでも先ほどのブロック、「もし~なら」の出番になるのですが、、、
今回は、ひよこからねこが離れてしまったら、「いらっしゃい!」と言うのをやめてほしいんですね。
このような時には、「もし~なら」ブロックのすぐ下にある、「もし~なら、でなければ、」のブロックが活用できます!
【Scratch】スクラッチ もし~なら、でなければの説明
このブロックを使って、
【Scratch】スクラッチ ひよこにもし~なら、でなければを配置
このようにすることで、
もしねこに触れたなら、「いらっしゃい!」と言い、
そうでなければ(→つまり、離れているなら)「」と言う、
ことが実現できます。
Anks
「言うのをやめる」というブロックが無いのですが、
「~と言う」ブロックのセリフ部分を空白にすると、スプライトが言っているセリフを消すことができますので、覚えておいてください!
なお、「~に触れた」のブロックは、
「~キーが押されたとき」と同様に、「調べる」欄の中にあります。
プルダウンから触れたものを選ぶことができますよ。
【Scratch】スクラッチ ~に触れたの説明
ここまででプロジェクトはほぼ完成です。
旗ボタンを押して試してみると、
ひよこがねこに触れたときだけ「いらっしゃい!」と言うようになりましたか?
最後に、コスチュームの機能を使って、
セリフと同時にひよこの口が開くようにしましょう。

○コスチュームについて

ひよこのスプライトを選択した状態のまま、
画面左上のコスチュームのタブをクリックしてください。

以下のような画面になりましたでしょうか?

【Scratch】スクラッチ コスチューム選択画面

実は、ひよこのスプライトには、
あらかじめ3種類の画像(コスチューム)がセットになっています。

今表示されているChick-a以外に、
口を開いたChick-b、何かをついばんでいるChick-cがありますね。

ねこに触れているときはChick-bに、離れたらChick-aのコスチュームに戻るように、ブロックを加えましょう。

「コード」タブに戻り、「見た目」から「コスチュームを~にする」のブロックを見つけて、
以下のように配置します。

【Scratch】スクラッチ ひよこ 触れたら口を開いてセリフ

これで、セリフと同時にひよこの口が開くようになりました!

今回は少々ボリュームがありましたが、
プロジェクトは以上で完成です。お疲れ様でした。

矢印キーでのスプライトの動き、スプライトに触れた時の当たり判定について、
仕組みを理解できましたでしょうか??

 

次回は、ねこがマウスのポインター(カーソル)についていく動きを作ってみたいと思います!
今回もありがとうございました。

→次のチャプター <導入編>2-4 ボールをよけるゲームを作ろう! に進む


※なお今回は、当たり判定の部分について、
簡単に「もし~なら、でなければ」のブロックのみで基本構成をしていますが、

これだけだと、実は、ねこに触れている間はずっと、
何度も「いらっしゃい!と言う」「コスチュームをchick-bにする」の命令が実行されてしまっています。(離れている間も同様)

何度も実行すると支障があるケース(効果音を鳴らす、など)場合は特に、
ブロック「~まで待つ」を活用もしくは併用する必要があります。

参考までに、今回のひよこのスクリプトを「~まで待つ」ブロックに置き換えたものを載せておきます。

(現時点ですぐに理解しなくても大丈夫です。詳細は改めて別記事で解説したいと思います。)