二作目の作品【ぼく】で使ったセリフを頭上に表示するコモンイベントを紹介しようと思います。
紹介する吹き出しセリフコモンは、3つのコモンイベントを用意してセリフを主人公やマップイベントの上に表示しています。
このコモンイベントはゲ制初心者のMNEETが作ったものなので無駄が多いと思います。なのでもっと改良できると思います。
ベースになる並列実行(常時)のメッセージウインドウを表示するコモンイベント
このコモンイベントで行っていることは
- フォントサイズの設定
- 誰のセリフなのか?
- メッセージウインドウをどの位置に表示するのか?
- メッセージウインドウのサイズは?
この3つを調べ条件分岐で指定しています。
最初に表示させたい文章を文字列として内容を保管し、コモンセルフ変数に文字列を代入。一旦ピクチャとして表示させます。この表示したピクチャの縦横のサイズを変数に代入して+余白分の数値(お好みで)します。
次に誰に表示させたいのか?を調べます。誰のセリフなのか調べる際にコモンイベント216(マップEvメッセージ表示)から変数呼出し値15000000+100*Y+X( コモンEv Y のコモンセルフ変数X)を使って、変数を呼び出して誰のセリフなのか?を調べています。
ポーズカーソルもこのタイミングで位置を指定しています。
途中のこの部分…
|■変数操作: CSelf32[マップ窓Y] -= CSelf25[窓サイズY] + 22
正直、どうしてこう記述しているのか覚えていないです…。
メッセージ表示中の時にメッセージウインドウを表示したいので、「メッセージ表示中?」で分岐させています。
誰にセリフを表示させたいのかを指定するコモンイベント
このコモンイベントでマップイベントから直接、誰にメッセージを表示させたいのか?を指定します。
なので、このコモンイベントをセリフなど文章を表示させる時に直前で挿入して誰のセリフなのかを指定してあげる必要があります。
いちいち手間ですが…自分にはこのコモンイベントが無いと呼び出し元以外のマップイベントの頭上にメッセージを表示することが出来ませんでした。
ここでは「設定」でコモンセルフ0に「結果を返す」で誰のセリフなのかを指定できるように入力し、それぞれで条件分岐させています。結果はコモンセルフ0に返しています。
分岐の中は設定した内容に合うように座標XYを呼び出して変数にそれぞれ代入しています。主人公の座標は並列実行(常時)のメッセージウインドウコモンで調べているので、ここでは記述していません。
このコモンイベントで重要な所は最後の「任意のマップEVを指定」の箇所です。この為だけのコモンイベントといっても過言ではありません。
「設定」で任意で数値で入力(ここで入力した数値がマップイベントIDになる)をできるようにし、「結果をコモンセルフ0に返す」ようにします。
条件分岐にてマップイベントIDが-1のときはマップイベントが存在しないので「イベント処理中断」をします。0以上の場合はマップイベントが存在するので自分で指定したマップイベントIDの座標XYを調べます。
このコモンイベントで呼び出した座標は【メッセージウインドウコモン】で呼び出して使っています。
選択肢の場所をメッセージウインドウの隣に表示する
このコモンイベントはタイトル画面の時とそれ以外で選択肢ウインドウの表示場所を変えるものです。
メッセージウインドウのサイズに合わせて選択肢の位置が変わるようになっています。
画像だけでは分かりにくいので補足…窓XYは主人公の画面座標XY、窓サイズXYは【メッセージウインドウコモン】で一番最初に表示したサイズ保存用ピクチャの縦横のサイズです。
最後まで読んでいただき、ありがとうございます