ベルに触れたら音を鳴らしてみよう(音 / あたり判定)

2017年12月30日

スプライトが動くプログラミングができたら、次は音をならすプログラムを作ってみましょう。ただ音をならすだけでは簡単すぎるので、今回は前の記事で習った動かす方法を活かして、ScratchCatがベルに触れたら音を鳴らすようなプログラムにしたいと思います。

アイテムに触れたら音を鳴らしてみよう

今回のポイントは以下の3つです。

 

(1)複数スプライト(ScratchCatとベル)を使う

(2)音をならす

(3)ScratchCatとベルのあたり判定

 

(1)ここまではScratchCatという1個のスプライトしか登場しませんでしたが、Scratchを使ってゲームを作ったり凝ったものを作る場合に登場するスプライトが1個だけということはないです。このため、今回は複数のスプライトを使う方法について学びましょう。

 

(2)音をならすのは、あらかじめスクリプトが用意されているので簡単にできます。スプライト同様に多くの音をScratchでは用意しているため、自分で新たに音を用意する必要もなく自由に使うことができます。

 

(3)今回のプログラムで1番複雑なのがこのあたり判定。例えばシューティングゲームを思い浮かべてもらうとわかると思いますが、敵へあたったか、アイテムにあたったか、攻撃があたったか、と様々な場面であたり判定が必要になってきます。プログラムを作る上で重要なポイントになるのでしっかりと理解してください。

 

では、早速作っていきましょう。

 

1.プロジェクトを作成する。

まずはプロジェクトを作成しましょう。プロジェクトの作り方は以前にも解説しましたので今回は詳細は省略します。またScratchCatを歩かせてみよう!ver2で学習した歩くプログラムまで作っておきましょう。

 

今までに作ったことのあるプログラム(スクリプト)は、バックパックを使うことによって新規のプロジェクトに簡単にコピーすることができます。バックパックの使い方はこちらの記事で説明しているので参考にしてみてください。

 

 

2.ベルのスプライトを追加する

次にベルのスプライトを追加しましょう。プロジェクト作成時にはScratchCatが初期表示されていますが、他のスプライトを使いたい場合には追加することができます。

 

スプライトリストの「新しいスプライト」から「スプライトをライブラリーから選択」をクリックします。

 

Scratchが用意しているスプライトが表示されるため、ベルを探して選択、右下にある「OK」ボタンをクリックしましょう。

 

 

スプライトリストにベルが表示されるとともに、ステージにもベルの画像が表示されます。また、スクリプトエリアが空白になりました。これは、スクリプトがスプライトごとに設定するものであり、選択したスプライトがSprite1(ScratchCat)からBell(ベル)に変わったことにより、ベルのスクリプトを表示しているからです。

 

ScratchCatは右に歩いて行くようにスクリプトを書いているため、ベルはその延長線上になくてはいけません。ベルの位置を右側に変更しておきましょう。

 

 

3.ベルのスクリプトを記述する

ベルのスプライトを追加したら、次はそのベルにスクリプトを記述していきます。今回はScratchCatがベルに触れたら音が鳴るようにしましょう。

 

スタート条件はScratchCatが歩き出すのと同じ「スペースキーが押されたとき」にします。そして、「制御」から「◯◯まで繰り返す」をつけます。この「◯◯まで繰り返す」の◯◯には「調べる」の条件を設定します。今回の「◯◯まで繰り返す」では「◯◯」に設定された条件を満たすまで囲っている中のブロックを繰り返します。

 

 

◯◯の条件には「調べる」から「“マウスのポインター”に触れた」のブロックをドラッグ&ドロップしましょう。条件の設定をドラッグ&ドロップする時は、持っているブロックの左端を設定したい箇所に当てるとハマります。そして、“マウスのポインター”の部分を「Sprite1」(ScratchCat)に変更します。これでSpritCatが触れるまで処理を繰り返すことになります。

 

 

そして最後にベルの音を鳴らすブロックを追加します。「」から「“bell_toll”の音を鳴らす」をスクリプトの一番下に追加しましょう。

 

 

先ほど追加した「”Sprite1に触れた”まで繰り返す」の囲みの中は何も記述しません。これにより、ScratchCatがベルに触れるまで何もしない処理を繰り返すことになり、次の処理に進むのを待ちます。そして、ScratchCatがベルに触れることによって繰り返し処理が終わり、最後の「bell_tollの音を鳴らす」の処理が行われることになります。

 

完成

今回、実際に作ったプログラムをスクラッチ上で公開したものが以下になります。

 

シンプルですが、このあたり判定というのがゲームを作る時などにとても重要なポイントになってきます。”シューティングゲームで自機/敵機への攻撃”、”RPGで壁に当たったか”、”レーシングゲームでアイテムの取得や相手への接触”などなど、様々な場面であたり判定を行う必要があります。実装方法は他にもいくつかありますが、基本の考え方をしっかりと理解しておきましょう。