スクラッチでRPGシリーズ第5回目は「会話ウィンドウ」の実装です。
これを表示できると、だいぶRPGっぽくなってくると思いませんか?

以前、Scratchで日本語を表示するのに、文章を画像にして貼り付けという方法を紹介しましたが
今回は定義ブロックを使って、スクリプトで指定した文章を表示する方法をご紹介します。

http://scratch.mit.edu/projects/48134228/
WS0002
■キャラ素材:臼井の会(http://usui.moo.jp/rpg_tukuru.html)
■マップ素材:First Seed Material(http://www.tekepon.net/fsm/)

サンプルの「中を見る」でスクリプトをご覧ください。

日本語の画像はどうするの?

今回は画像を作ったりする必要はありません!
スクラッチユーザの「inosyanさん」が作った日本語スプライトを使います。
日本語を1文字ずつコスチュームにしてあるスプライトで、ひらがな・カタカナ・記号が完備されています。

このまま使うのはちょっと容量が大きいので
赤色の文字だけをピックアップしたものを用意しました。
サンプルの中のスプライトをコピーしてお使いください。
スプライトのコピーの仕方はこちら


ウィンドウに文字を出そう

WS0003
では「もじ」の中にあるスクリプトを見ていきましょう。WS0006

 文字は赤色ですので「明るさ100」にして白色に変更して下さい。
会話ウィンドウが出るまでは隠しておきます。

そして「話す」を受け取ったときが会話ウィンドウが出たときです。
このときに「文字を書く」という定義ブロックを実行します。
定義ブロックの作り方はこちら

「文字を書く」の定義ブロックは、3つの引数をもっています。
WS0005
ひとつめは「文字列」の引数。この中にしゃべらせたいセリフを入れます。
ふたつめは「x」という数値の引数。文字を表示し始める場所xを入れます。
みっつめは「y」という数値の引数。文字を表示し始める場所yを入れます。

あとは、引数に応じて、キャラクターにしゃべらせたいセリフを好きな場所に表示させることができます。

 WS0008
「変数 i 」は何番目の文字をスタンプするかを数えるためのカウンターです。
一般的にカウンターの役割をもつ変数は「 i 」と名付けられることが多いので
なれておくといいかもしれません。( i と j がよくつかわれます) 

あとは文字数の数だけループさせ一文字ずつスタンプしていきます。

画面のはしまで来たら改行するようにしていますが
リストにない文字を使って
もしi番目の文字が「改」だったら…のように条件をつければ
「ここにすきな改セリフをいれます。」という文字を入力すると
「ここにすきな
セリフをいれます」
のように自由に改行させることもできます。

スタンプはスプライトの上に押せない

この記事をよみながら作っている人は
「ウィンドウの上に文字が押せない」ことに気付いたのではないでしょうか?

そうです。スタンプはスプライトの上には押せません。
ですので、この会話ウィンドウを実装するためには
ウィンドウもスタンプしなければならないのです。 

WS0010
こんな感じで、「表示する」ブロックのかわりに「スタンプ」を押して
話すが終わったら「消す」ブロックでスタンプを消しています。

自分のゲームに最適なスクリプトを考えよう

今回紹介した方法は、あくまで「ウィンドウに文字を表示する」だけのサンプルです。
実際にゲームで使用するときに使うには、使い勝手が悪いでしょう。

ストーリーに応じて文字を表示する。
文字を表示するときに、沈黙などで間をとらせたい。
沢山しゃべるので改ページしなければいけない。 

など色々やりたいことが出てくると思いますので
そのつど、最適なスクリプトを考えて
オリジナルのストーリーを展開してみて下さいね!

もしうまくいかない場合は
コミュニティを活用して、質問してみましょう。 
この記事がよかった!という方は「B!」ボタンや
こちらのボタンを押していただけると元気がでます!