【Scratch】<応用編>5-1 隠れた非表示のスプライトをクリックして表示する方法

・隠れた非表示のスプライトをクリックして表示する方法
(宝探しゲーム、脱出ゲームや謎解きゲームなどに活用可能)
・スプライトをクリックするたび表示非表示が切り替わるスクリプト

こんにちは、Anksです。みなさまよろしくおねがいします。

 

今回は、「隠す」ブロックなどで非表示になったスプライトをクリックして表示する方法について解説します。(→スクラッチ関連のコンテンツ一覧については、こちら

 

例えば、宝探しゲームや脱出ゲーム、謎解きゲームなど、
スタート時(「旗が押されたとき」)には「隠す」ブロックでスプライトを隠しておき、
クリックしたら「表示する」ブロックで表示させることが出来るような仕組みを作りたい時があるかと思います。

 

ここで、
通常、クリックしたときに何かを実行させたい場合、
良く使うのが「イベント」欄の「このスプライトが押されたとき」ブロックです。
【Scratch】スプライトが押されたときブロック

 

ところが、
「このスプライトが押されたとき」ブロックは、
「隠す」ブロックなどで非表示になっているスプライトをクリックしても、反応しないようになっています。

その一方で、隠れているスプライトでも、「マウスのポインターに触れた」ことは感知します。

【Scratch】スクラッチ マウスのポインターに触れたブロック

 

そこで、今回のように隠れたスプライトをクリックしたい場合は、

このブロックではなく、

「マウスが押された」と「マウスのポインターに触れた」ブロックを合わせて使うことで、
隠れたスプライトでも、クリックされたことを感知することができるようになります。

【Scratch】スクラッチ 隠れた非表示のスプライトのクリックの仕方その1

ところが、このやり方だけだと、一点問題が残ります。

 

<入門編>3-1の「マウスが押された」の注意点で解説したとおり、
「マウスが押された」ブロックは、マウスが押されている間はずっと反応してしまいます。

 

これだと、
一回のクリックで何回もプログラムが実行されたり、

マウスをクリックしたままマウスのポインターを画面上であちこち移動させるだけで、
どこかに隠したスプライトを簡単に見つけ出せてしまいます。

 

そこで、クリックに一度だけ反応する方法として、以下の二通りのブロックの配置を紹介します。

【Scratch】スクラッチ 隠れた非表示のスプライトのクリックの仕方(一度だけ反応)

 

①の方法は、
マウスを離している状態からスタートして、「マウスが押された」まで待ち、
押されたタイミングでマウスのポインターに触れているかどうかを判定します。

②の方法は、その逆で、
マウスが押されてから、マウスを離すタイミングまで待ち、
離したタイミングでマウスのポインターに触れているかどうか判定します。

 

つまり、

①の方法では、
マウスをクリックした瞬間に一度だけ反応して、中身のブロックが実行され、

②の方法では、
マウスを離した瞬間に一度だけ反応して、中身のブロックが実行されます。

 

①の方法を使って、
スタート時(旗が押されたとき)にスプライトを隠して非表示にして、
隠れたスプライトをクリックしたら表示するスクリプトは以下のようになります。

【Scratch】スクラッチ スタート時に隠して非表示、クリックしたら表示のスクリプト

「表示する」の後に「このスクリプトを止める」のブロックを追加しておけば、
表示された後はこのスクリプトのイベントを発生させないようにすることも可能です。

 

また、これを応用して、

「旗が押されたとき」のブロックを「このスプライトが押されたとき」に変えると、
クリックで表示されたり隠れたりするスプライトを作ることができます。

【Scratch】スクラッチ クリックでスプライトが表示非表示になるスクリプト

以下が、このスクリプトをセットしたねこ(Scratchキャット)のプロジェクトになります。

旗を押して、スプライトをクリックして試してみてください。

以上で、今回のチャプターの解説はおしまいです。
今回の内容が、少しでもゲーム作りの参考になれば嬉しく思います!

 

最後までお読みいただき、ありがとうございました。

【Scratch】誰でもわかるスクラッチ入門 コンテンツ一覧 に戻る