ページトップへ

子どものScratchで会話が重なるときは?メッセージでセリフの順番をつなぐ作り方

コラム

子どもがScratchでお話を作ったのに、登場人物が同時に話してしまう。待ち時間を直しても、セリフを長くするとまた順番がずれてしまい、どこを調整すればよいか迷っていませんか。

会話を順番に進めたいときは、登場人物ごとに待ち時間を計算する代わりに、「メッセージを送って待つ」で一つずつセリフを呼び出す方法があります。この記事では、二人の登場人物による短い会話を例に、順番を決める場所と、セリフを表示する場所を分けて作ります。

会話が重なるのは「同じ合図で別々に動く」ため

例えば、ネコにもウサギにも「緑の旗が押されたとき」を置き、その下にセリフのブロックをつなぐと、両方が旗を合図に動き始めます。一方が話し終わるまで、もう一方が自動で待ってくれるわけではありません。

Scratchでは、複数の処理が並行して動きます。この仕組みは、MITのScratch概念解説資料でも説明されています。

ウサギの側に「2秒待つ」を入れれば、最初の重なりは避けられるかもしれません。ただし、後からネコの表示時間を長くすると、ウサギ側の待ち時間も直す必要があります。会話が増えるほど、別々の場所にある時間を合わせる作業になります。

そこで今回は、「旗から何秒たったか」ではなく、「前のセリフの処理が終わったか」を基準に、次のセリフへ進めます。

「送る」と「送って待つ」は何が違う?

Scratchのメッセージは、画面に表示する文章ではなく、別のプログラムを動かすための合図です。「ネコの質問」という合図と、画面に出す「何を作っているの?」というセリフは、別々に用意します。

使うブロック 送った側の動き 今回の使い分け
[メッセージ]を送る 受け取った側の処理が終わるのを待たず、次へ進む 会話の順番をつなぐ用途には使わない
[メッセージ]を送って待つ その合図で始まった処理がすべて終わってから、次へ進む 一つのセリフが終わってから次を呼び出す

基本の動作は、Scratch公式のメッセージを送るブロックの説明と、送って待つブロックの説明で確認できます。

ただし、「送って待つ」は、文章の意味を読み取って会話を進める機能ではありません。受け取った側に、終わりのある処理を作ることが必要です。今回は、秒数付きの「言う」ブロックを使います。

会話の順番表を作り、ステージに進行役を置く

ここからは練習用の作例です。秒数は説明のための設定値であり、おすすめの読書速度や年齢別の基準ではありません。実際には表示を見て、読み切れる長さに調整してください。

まずはネコ、ウサギの二つのスプライトを用意し、吹き出しが見分けやすいように左右へ離して置きます。会話は、次の三つだけに絞ります。

順番 話す役 表示するセリフ 合図の名前
1 ネコ 何を作っているの? 会話01-ネコの質問
2 ウサギ 空を飛ぶ船だよ。 会話02-ウサギの返事
3 ネコ ぼくも乗ってみたい! 会話03-ネコの感想

この表は、そのまま自分の作品用に書き換えられます。合図の名前に番号と役を入れるのは、送り先ではなく「どの場面の合図か」を見分けるためです。

ステージには、順番を呼び出すブロックを並べる

画面右下のステージを選び、「コード」を開きます。「イベント」から送って待つブロックを出し、メッセージ欄の「新しいメッセージ」で表の合図を作ります。

緑の旗が押されたとき
[会話01-ネコの質問]を送って待つ
[会話02-ウサギの返事]を送って待つ
[会話03-ネコの感想]を送って待つ

以下の枠内は、ブロックを上からつなぐ順序を文字で表したものです。貼り付けて実行するコードではありません。

登場人物には、合図を受けて話す処理を置く

ネコを選び、次の二つのまとまりを別々に作ります。

[会話01-ネコの質問]を受け取ったとき
[何を作っているの?]と[2]秒言う

[会話03-ネコの感想]を受け取ったとき
[ぼくも乗ってみたい!]と[2]秒言う

次に、ウサギを選んで返事を作ります。受け取る合図は新しく作り直さず、一覧から同じものを選びます。

[会話02-ウサギの返事]を受け取ったとき
[空を飛ぶ船だよ。]と[2]秒言う

「受け取ったとき」は、指定したメッセージが届くと、その下の処理を始めるブロックです。Scratch公式の受信ブロックの説明も参照できます。

この作例で会話を始める「緑の旗が押されたとき」は、ステージ側だけに置きます。もともと登場人物に旗から始まるセリフがある場合は、同じセリフが二重に動かないよう、今回の受信側へ移してください。会話と無関係な処理まで削除する必要はありません。

セリフを長くしても、次の人が待つか試す

旗を押し、ネコの質問、ウサギの返事、ネコの感想の順に表示されるか見ます。順番どおりなら、ウサギの返事を「空を飛ぶ船だよ。これから翼をつけるんだ。」に変え、表示時間も例として4秒に変更してみましょう。

記事の途中で1分・5問

お子さまに合う学び方診断

正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。

今回の構成なら、ステージ側に待ち時間を追加しなくても、ウサギのセリフ表示が終わってから、ネコの感想へ進みます。秒数付きの発話処理とメッセージ待機の実装は、Scratch Foundation公開の表示ブロックのソースコードと、イベントブロックのソースコードでも確認できます。

次に変えるのは、会話の内容ではなく「間」でも構いません。質問の後に少し考える時間を入れたいなら、ステージの最初と二番目の送信の間へ「待つ」を挟む、という設計にできます。これは順番を合わせるための待ち時間ではなく、演出として置く間です。

確認するときは、次の三点を目印にしてください。

  • 同時に出したくない吹き出しが重なっていない。
  • 一つのセリフの表示時間を変えても、後の順番が崩れない。
  • 会話の順番を変えたいとき、ステージ側の並びを見れば分かる。

重なる・先へ進まないときに見る場所

同じ合図を二人が受け取っていないか

メッセージは、特定の相手だけに届くものではありません。二人とも「会話01-ネコの質問を受け取ったとき」から話すようにすると、二人の処理が始まります。「送って待つ」に替えるだけでは、この重なりは防げません。

今回の表では、一つの合図につき一人だけが話す形です。予想外の人物が話したら、その人物の受信ブロックで選んだ名前を確かめてください。

秒数のない「言う」を使っていないか

「こんにちは!と言う」と「こんにちは!と2秒言う」は別のブロックです。秒数のない方は、表示を続けるためにその場で待つ処理ではありません。この作例では、秒数付きへ替えてください。

吹き出しを明示的に消したい場合は、中身を空欄にした「言う」を使えます。この操作はScratch公式の吹き出しの説明に掲載されています。

受け取った処理の中に「ずっと」がないか

例えば、ウサギの受信処理で、セリフの後に「ずっと」をつないで動かし続けると、その処理は終わりません。ステージは終了を待つため、ネコの感想へ進めなくなります。

まずは会話を、上の作例のような終わりのあるまとまりに戻します。常に動かしたい飾りや背景は、会話の終了を待つ処理とは分けて設計しましょう。

よくある質問(FAQ)

「何秒待つ」だけで会話を作ってはいけませんか?

いけないわけではありません。短く、表示時間を変更しない作品なら、それも選択肢です。セリフの追加や時間変更のたびに複数の待ち時間を直しているなら、今回の進行役方式へ替える目安になります。

メッセージ名を変えると、吹き出しの文章も変わりますか?

変わりません。メッセージ名は処理を始める合図、吹き出しは「言う」に入力した文章です。物語の文章を直すときは、登場人物側の「言う」を編集します。

三人目の登場人物を追加できますか?

同じ設計で追加できます。順番表に三人目の行を作り、その合図を受けて話す処理を三人目に置きます。ステージには、話してほしい位置へ「送って待つ」を追加してください。

幼児が作る場合も、このブロックを全部覚える必要がありますか?

この活動では、ブロック名の暗記を目標にする必要はありません。まず紙に描いた登場人物を並べ、「誰の次に誰が話すか」を決めるところだけ担当する進め方もできます。画面で組み立てる範囲は、本人が試したいことに合わせてください。

会話のある作品を、次の制作につなげたい方へ

できあがったら、会話の順番表と画面を見比べてみましょう。「順番はステージ、話す内容は登場人物」という分担が見えると、セリフを足す場所も探しやすくなります。

南青山のCotoMiraiでは、年齢・興味・理解度に合わせた個別指導を行っています。教室の方針はCotoMirai公式サイトで確認できます。家庭の会話作品を使って続きを学びたい場合は、希望する内容への対応や作品の持ち込み方法を、申し込み時にご確認ください。

年中以上のお子さまには無料体験を案内しています。年中未満のお子さまはイベントへの参加案内となるため、対象に合う入り口をご確認ください。

CotoMiraiの無料体験・入会方法を見る

参考にした情報

関連する記事

読後に1分・5問

お子さまに合う学び方診断

正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。

お知らせ一覧へ

アクセス

A C C E S S