2016年2月23日火曜日

ウディタでADV(ノベルゲー)作成講座7 バックログの表示

バックログを格納する


まずは、以前に作成した「コモンイベント001:文章表示」で、文字列変数にログを格納していく処理をしましょう。

文字列変数0番に「バックログ」と名前をつけます。

以前作成した「コモンイベント001:文章表示」の「名前が""以外」という分岐のところに、文字列の操作コマンドをいれます。

「文字列操作」で文字列変数0番を選び、以下の内容を追加する設定にします。
手動入力で「¥f[17]¥cself[6]:」と入力し、改行して「¥f[21]」とします。
¥fはフォントサイズを指定するコマンドです。
名前はちょっと小さく表示したかったので、フォントサイズを17に指定し、コモンセルフ変数6番(名前が格納されている)の内容を表示し、本文は大きい文字で表示するように、最後にフォントサイズ21を指定しました。

続いて、本文を格納していきます。分岐終了の後あたりに次の文字列操作をいれます。

「文字列操作0番バックログ」を選び、「+=」を選ぶところまで一緒です。
代入内容を、「¥cself[5]」として、その後に二回改行を入れています。

以上で、バックログを格納する操作は終わりです。


赤く囲ったところが、今回追加した内容です。


なお、私みたいに「文章表示」というコモンイベントを組まずにバックログを作りたい場合は、システム変数25番に文章表示の内容が格納されているので、並列実行でそれを読み取り、文字列変数に格納する処理をしていけばいいかと思います。

バックログを表示する


次に、バックログを表示するイベントを作ります。
表示させるだけなら非常に簡単です。
「文字列変数0番バックログ」をピクチャで表示させるだけだからです。

実際にやってみましょう。


コモンイベント004に「バックログ」と名前をつけます。


まず、画面全体を暗くする処理です。

ピクチャ番号100000(10万)を指定して、ピクチャ表示します。
※ピクチャ番号に10万以上を指定すると、「文章表示」コマンドで表示される文章よりもピクチャが上に表示されるようになります。
表示タイプは「[4]お手軽ウィンドウ」を選び、ファイルには<SQUARE>と入力します。
生成サイズは横640、縦480の画面と同じサイズを指定します。
不透明度は220、カラーはRGBすべて0を入力します。


つづいて、バックログをピクチャ表示させる処理です。

ピクチャ番号100001に表示させます。
表示タイプは「[3]文字列をピクチャとして描画」を選択して文字列には「¥s[0]」と入力します。
※¥s[0]で文字列変数0番の内容が代入されます。
位置は「左下」を指定し、x座標には15、y座標には480を指定します。
不透明度は255、カラーは全て100に戻すのを忘れずに。

コモンセルフ変数10番に「ログの縦の長さ」と名前をつけます。

「変数操作+」で今名前をつけたコモンセルフ変数10番を指定し、ピクチャ番号100001の縦の長さを読み取ります。





「イベント制御」コマンドでウェイトを20フレーム挿入します。
「イベント制御」コマンドで「ループ(繰り返し)」を挿入します。
ループの中に、「イベント制御」コマンドでウェイトを1フレーム挿入します。


コモンセルフ変数11番に「キー入力受付」と名前をつけ、キー入力の設定をします。


上下キーと決定キーの入力を受け付けるように設定をします。

上下キーを押すとバックログがスクロールするように設定します。
まず、条件(変数)で下キーが押されたときの処理から入力していきます。


「このコモンセルフ11:キー入力受付」が数値「2」と同じときを条件に設定します。

ウェイトを10フレーム挿入します

コモンセルフ変数12に「ログのy座標」と名前をつけ、「変数操作+」でバックログのy座標を取得します。


ピクチャ番号「100001」の「y座標」を取得するよう設定して「入力」を押します。


取得したy座標が60以上の場合にのみ、バックログがスクロールするように設定します。
これはバックログが全て画面外に出てしまわないようにするための処置です。


「条件(変数)」で「このコモンセルフ11:y座標」が「60以上」のときに条件を設定します。





ピクチャ番号100001番を指定し、ピクチャ移動させます。
座標は「相対モード」にチェックをいれるのを忘れないようにして、x座標には0、y座標には-10を入力します。
※追記…スクロールが遅かったので、y座標に入力する数値を「-30」に変更しました。

ここまでで下キーを押したときの処理は完了です。
続いて、上キーを押したときの処理です。
ほぼ下キーを押した場合と似たような感じなのですが、条件設定が異なりますので注意してください。



①変数(条件)を「このコモンセルフ10:キー入力受付」が「8と同じとき」に設定します。
②変数(条件)を「このコモンセルフ11:y座標」が「cself10:ログの縦の長さ」「未満」のときに設定します。
③番号100001のピクチャ移動を、相対モードでy座標を30移動するように設定します。


続いて、決定キーを押すと、バックログ表示を終える設定をしていきましょう。

条件(変数)で「このコモンセルフ11:キー入力受付」が「10と同じ」ときに設定します。

「イベント制御」でウェイト20フレームを挿入します。


ピクチャ番号100000~100001を消去します。

最後に、ループ中断を入力して、ひとまず終了です。


バックログを呼び出すイベントを作る

さて、ここからは「サブキー」を押したときに上記のコモンイベントを呼び出すように設定していきます。

コモンイベント005に「並列実行」と名前をつけ、起動条件を「並列実行(常時)」にしたイベントを作ります。

セルフ変数10に「キー入力受付」と名前をつけ、サブキーを受け付ける設定をします。

「キー入力」で代入先に「このコモンセルフ10:キー入力受付」を選択。
方向キーは受け付けず、サブキーのみ受け付ける設定にします。

条件(変数)で「このコモンセルフ10:キー入力受付」が「12と同じ」に条件を設定します。

ウェイト10フレームを挿入します。

「コモンイベント」コマンドの「イベントの挿入」で「コモン4:バックログ」を選択します。

これで準備ができました。
作動するかどうか、テストしてみましょう。

少し会話を進めてから、サブキーの「C」キーを押すと、きちんとバックログが表示され、上下キーでスクロールすることができました。
また、決定キーを押すと、バックログ表示が終了し、ゲームに戻ります。

ただ、問題点があります。
バックログ表示中に押したキーがゲーム本編にも適用されてしまうため、選択肢表示中にバックログを表示すると、スクロールするためというつもりで上下キーを押すと、選択肢のカーソルも動き、バックログ終了のために決定キーを押すと、選択肢が決定されてしまいます。

バックログ表示中は選択肢のキー入力を受け付けないように設定しましょう。


バックログ表示中の選択肢の処理

「コモンイベント003:選択肢」を修正していきます。

現在は何も条件分岐がなく、キー入力を受け付ける状態になっています。
ここを修正していきましょう。

まず、通常変数1番に「選択肢のキー入力を受け付ける」と名前を付けます。


条件(変数)で、「v1:選択肢のキー入力を受け付ける」が「0と同じ」ときに条件を設定します。


キー入力受付コマンドを条件分岐の中に移動させたらOKです。


続いて、先ほど作った「コモンイベント004:バックログ」の一番最初と最後に、この変数を操作するコマンドを入力します。


一番最初のところで変数1番に1を代入します。
一番最後の行では0を代入します。

これで、バックログは完成です。

0 件のコメント:

コメントを投稿