こちらは、スクラッチの「メッセージ▢受け取ったとき」ブロックの使い方を、詳しく徹底解説しています!
「メッセージ▢受け取ったとき」ブロック
「メッセージ▢受け取ったとき」ブロックは、指定したメッセージを受け取ったときに、下にあるスクリプトを実行します。
ハットブロック
スクラッチのブロックには、役割に応じたブロック形状の決まりがあります。
ブロックの形状については、「Scratchのブロックの種類と役割について」をご確認ください。
「メッセージ▢受け取ったとき」ブロックは、ハットブロック(Hat Block)に該当します。
ハットブロックは、上の部分が丸くなっており、ハットブロックの上にはブロックを置くことができませんが、下の部分には凸がついており、下にブロックをつなげることができます。
この下につなげたブロック群(スクリプト)を実行するためのブロックです。
「メッセージ▢受け取ったとき」ブロックの規定値
「メッセージ▢受け取ったとき」ブロックの規定値は、以下の2つです。
- 新しいメッセージ
- メッセージ1
「新しいメッセージ」は、新しいメッセージを作ることができます。
「メッセージ1」は、スクラッチエディターを新規で開いたときのデフォルトのメッセージです。
メッセージは、最低1つ必要で、他のメッセージを作成すれば、「メッセージ1」を消すことができます。
メッセージの消し方については、「スクラッチのメッセージが削除できない!?それ簡単に消せます!」をご確認ください。
「作成したメッセージ」は、こちらのように作られたリストがすべて表示されます。
「メッセージ▢受け取ったとき」ブロックの使い方
それでは、「メッセージ▢受け取ったとき」ブロックの使い方を見ていきましょう。
まず、「メッセージ〇を送る」ブロックの▼を選択して、「新しいメッセージ」をクリックすると、新しいメッセージを作成できます。
「新しいメッセージ」画面が表示されたら、新しいメッセージ名を「移動」にして「OK」をクリックします。
そして、「▢キーが押されたとき」ブロックでスペースキーが押されたときに、「移動」というメッセージを送るプログラムを作ります。
今度は、「Ball」スプライトを選択して、受け取り側のプログラムを作っていきます。
「メッセージ▢受け取ったとき」ブロックで、メッセージ「移動」を受け取ったときに、10歩歩き、端についたら跳ね返るプログラムを作りました。
これで、スペースキーを押すとメッセージ「移動」が送られ、メッセージ「移動」を受け取った「Ball」スプライトが動きます。
今度は、「衝突」というメッセージを新たに追加します。
「Ball」スプライトのメッセージ「移動」を受け取ったときの一番下に「メッセージ〇を送る」を追加しました。
送るメッセージは、先ほど追加した「衝突」です。
「スクラッチキャット」スプライトを選択して、メッセージ「衝突」を受け取ったときに、もしも「Ball」スプライトに触れたら、「〇へ向ける」ブロックで-90度を設定しています。
これで、「Ball」スプライトに触れたときにコケた感じになります。
ただし、そのままにしているとずっとコケた状態のままなので、メッセージ「衝突」を受け取ったときの一番下に90度に戻すよう追加しています。
これで、「Ball」スプライトに触れていないときには、常に90度を向いています。
実際に動かしてみると、「Ball」スプライトに触れたときにコケました。
そして、「Ball」スプライトから離れると元に戻ります。
イベントブロック一覧
「イベント」ブロックには、以下の8個のブロックが用意されています。
- ハットブロック・・・6つ
- スタックブロック・・・2つ
ブロックの色は、黄色で統一されています。
スクリプトを実行するトリガー(きっかけ)としてよく利用されます。
イベントブロック | 動作 |
---|---|
緑の旗が押されたとき 緑の旗がクリックされたときに、下にあるスクリプトを実行する |
|
▢キーが押されたとき 指定したキーが押されたときに、下にあるスクリプトを実行する |
|
このスプライトが押されたとき このスプライトがクリックされたときに、下にあるスクリプトを実行する ※背景のブロックでは、「ステージが押されたとき」に名称が変わる |
|
背景が▢になったとき 背景が指定した背景になったときに、下にあるスクリプトを実行する |
|
▢>〇のとき 指定した値より指定した項目の値が大きいときに、下にあるスクリプトを実行する |
|
メッセージ▢受け取ったとき 指定したメッセージを受け取ったときに、下にあるスクリプトを実行する |
|
メッセージ〇を送る 指定したメッセージをスクラッチプログラム全体へ送る |
|
メッセージ〇を送って待つ 指定したメッセージをスクラッチプログラム全体へ送り、受け取った側のスクリプトが終わるまで待つ |