※ 当ページには【広告/PR】を含む場合があります。
2020/09/23
【Scratchで簡単なゲーム作成編④】条件を満たすとアイテムの種類を変化する機能をつける
【Scratchで簡単なゲーム作成編⑥】クローンの使い方を工夫して、スプライトのプログラミングを効率化してみる
スクラッチでの文字表示としては、デフォルトで〇〇と言う
と〇〇と考える
の2つが簡単に利用できます。一方でロールプレイングゲームなどのような枠の中に文字が表示されるようにしたい場合には、フォントなどを準備したり、文字の表示位置を適切に処理したりと、ちょっとした工夫が必要になります。というわけで、今回はオリジナルのセリフ枠をゲーム内に入れる方法をためしてみます。ちなみに今回の完成品プログラムはこちらです。また、以下でデモプログラムを貼り付けておりますので動かしてみてください。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
フォントコスチュームの準備
自作のフォントを準備しても良いのですが、ひらがな、カタカナ、数字、記号...などなどフォントとして登録して使いたい文字があればあるほど、手間がかかってしまいます。今回は既に基本的な日本語のフォントをコスチュームのセットにして公開していただいているプロジェクトから、該当のスプライトだけを抜き取って自分のプロジェクトで扱えるようにするやり方がこちらのサイトで紹介されています。まずはフォントセット付きのスプライトの移植方法をやっていきます。先程のサイトで紹介されているやり方では、こちらの方のプロジェクトの中にあるスプライトを利用させていただいているようです。プロジェクトのリミックスから余計な要素を除去
それでは、2014あけおめ by inosyanというプロジェクトの中身を見ていきます。まずは[中を見る]
をクリックし、プロジェクトの中に入ります。もじ
スプライトがあるのでこの上で右クリックすると、[書き出し]
が出てくるのでこれをクリックします。この書き出しボタンを押すと、もじ.sprite3
というスプライトファイルが保存できるのでこれをパソコンのどこかに置いておきます。スプライトの書き出し・読み込み
新しいプロジェクトを作成し、スプライトの編集画面から[スプライトをアップロード]
をクリックし、先程保存したもじ.sprite3
を選択します。これで文字のスプライトがコピーされました。ただ、これだけだと余計なプログラムやスプライトが混じっているため、要らないものをきれいに消していきます。スクリプトブロックを全部消して空にし、使われていた変数もリストも削除、また文字のコスチュームも赤色と白色の2通りが用意されているので白文字をすべて消して赤文字だけに統一します。要らないものを消したら再度書き出し
して、もじ.sprite3
ファイルに上書きしたら完成です。これでどのプロジェクトにでも文字のスプライトがご自分のパソコンのフォルダから読み込んで利用できるようになりました。また、もっと文字を追加したいときや、色を変えたいときなど、コスチュームを編集することで新しく文字を利用することができるようになりますが、フォントセットは画像の詰め合わせですので、あまり増やしすぎても容量が大きく、動作が重くなってしまうので取り扱いには注意です。文字スプライトは必要最低限の文字コスチュームだけを入れるようにしたほうが良いでしょう。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
セリフ枠の実装
さて、ここからは本題のセリフを表示する枠の機能を実装する手順の話に戻ります。以前の記事・スプライト・クローンの基本的な利用方法では、クローンの位置を少しづつずらしながら、コスチュームを変えていくためのプログラミングを解説縞ましたが、クローンによる文字表示はこれとやっていることは同じです。早速文字を表示するプログラミングを行っていきましょう。編集前のプロジェクトはここにあります。前回、Scratchで簡単なゲーム作成編④ | 条件を満たすとアイテムの種類を変化する機能をつけるで作成したプロジェクトの続き作業にあたります。【Scratchで簡単なゲーム作成編④】条件を満たすとアイテムの種類を変化する機能をつける今回はScratchゲームで、条件の設定からアイテムの種類を変化させる方法を深堀してみましょう。
セリフ枠の準備
まずは材料の準備からです。スプライトを新たに2つ、先程作成したもじ
スプライトと、セリフわく
スプライトを作成します。セリフわく
スプライトには文字を表示するため、適当な枠の画像を作成しておきます。コスチュームもセリフわく
という名前で1つ登録しておきます。またここで変数セリフ
とおしらせちゅう
の2つの(グローバル)変数を追加しておきましょう。先にセリフわく
のスクリプトブロックから作成します。最初にゲームがスタートした時点ではセリフわく
が出ないように隠しておきます。ここでは2つのメッセージイベントを作成します。おしらせ
イベントのブロックで、セリフ枠の表示開始からの処理をさせています。また、おしらせおわり
イベントでセリフ枠を閉じる際の処理を行います。特に難しいプログラムではありませんが、おしらせ
イベントメッセージは不特定多数のスクリプトから送られて来られるのを想定して、おしらせ
の数だけ変数おしらせちゅう
をカウントアップさせております。どこかのスクリプトでおしらせちゅう
のカウントが消費(-1)されると、どこかの時点でおしらせちゅう
がゼロ(=つまりはセリフを閉じる状態)になるのを待って、おしらせおわり
メッセージを送り出します。おしらせおわり
イベントを受け取ると、セリフわく
が隠れるような処理を行っています。文字を変えてクローンする
次にもじ
スプライトにセリフ枠に文字を並べるスクリプトを作成していきます。これは以前の記事で説明したテクニックと同じですので、そちらも参考にしてください。セリフ枠にセリフ
に入った文字を表示開始させるおしらせ
イベントメッセージを受け取ると、セリフ
の文字を一つ一つ読み出して、座標をずらしながら、クローンされたときに適切なスプライトを割り当てている処理を行っています。各コスチュームの名前にはchar_<文字の種類>_red
と決められているので、それに注意しながらコスチュームを変化させます。またおしらせおわり
イベントを受け取ると、クローンを全部消去させています。セリフ枠の呼び出し
それでは最後にセリフを呼び出す側のスプライトに処理を挿入してみましょう。今回のプログラムでは、おきばしょ1
〜おきばしょ5
がセリフの表示を行っていたので、こちらのプログラムを修正します。一例をあげると、以下の赤色の四角部分のブロックになります。まずセリフ
に表示したい文字列をいれ、おしらせ
イベントでセリフ表示の開始を他のスクリプトに知らせてから、表示したい時間だけ待機し、表示しなくても良くなったらおしらせちゅう
のカウントを一つ減らしています。これで、たこがエサを食べるとセリフ
に渡された文字列を表示させることができるようになりました。余談〜クローンとスタンプの違い
拡張機能 - ペン
の中にあるスタンプ
を使えば、スプライトの画像を高速でゲーム画面に貼り付けることが出来て一見便利ですが、ちょっとした落とし穴があります。スタンプを描画するルールでは、背景を除くレイヤーの一番後ろ、かつ、すべてのスプライトの背面に描画される、とされています。つまり、スタンプは背景の上に追加で画像を書き込んでいるようなものですので、どうしてもスプライトより前面に絵を書くことが出来ません。このため、画像を他のスプライトよりも前面に見えるようにしたい場合、スタンプではなくクローンを利用しなければなりません。クローンを作成したときのルールとして他のスプライトの前面に表示されることを覚えておくと良いと思います。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
まとめ
今回は、スクラッチの文字の吹き出しから脱却して、ワンランク上の文字列表示の方法を解説してみました。この方法は色々と面白い応用が出来たり、よりゲームの見栄えをリッチに出来たりしますので、ぜひこの機会に覚えていっても損はないと思います。参考サイト
RPGの会話ウィンドウを実装しよう