2016年2月20日土曜日

ウディタでADV(ノベルゲー)作成講座6 選択肢(後編)

⑤選択肢を光らせる

続いて、選択している項目がきちんとわかるように、カーソル位置のある選択肢を光らせる処理をしていきます。

まず、ウェイトを挿入します。
ウェイトを挿入していないと、直前のセリフを決定キーで読み送った後、そのまま一つ目の選択肢で決定キーが押されてしまうためです。




ウェイト20フレームいれました。









次に変数操作をします。




「コモンセルフ11番:選択している位置」に1を代入します。











選択肢の一つ目を選択している時はピクチャ番号100番のウィンドウを光らせたいので、「コモンセルフ13番:ピクチャ番号」に100を代入します。


ここからの処理はループ処理になります。

「イベント制御」から「ループ(繰り返し)」コマンドを選んでください。




続いてループ内の処理を入力していきます。

エラーが出ないように、ウェイトを1フレーム入れてください。(画像省略)

次に、指定ピクチャ番号のピクチャを光らせます。



「エフェクト」コマンドを選択します。
ピクチャで「1600013」を指定し、コモンセルフ変数13番のピクチャ番号が代入されるように設定します。
効果は「カラー補正」を選び、赤青緑すべて50を代入します。

次にキー入力受付です。



「キー入力」で、代入先には「コモンセルフ12:キー入力受付」を選択します。
上下キーと決定キーの入力を受け付けるように設定します。

そして、変数条件分岐でそれぞれのキーが押された場合の処理を入力していきましょう。

まずは、「下キー」が押された場合を考えてみましょう。




条件分岐で「このコモンセルフ12:キー入力受付」が「2と同じ」の場合を指定します。









キーが連続して入力されるのを避けるため、ウェイトを10フレームいれます。(画像省略)



下キーを押したら一つ下の選択肢を選ぶようにしたいので、「コモンセルフ11:選択している位置」を+1しましょう。








このとき、一つ気を付けなければいけないことがあります。
「選択している位置」が選択肢の数を越えないようにしなくてはいけません。
例えば、選択肢が3つしかないのに、「選択している位置」が4になると、不具合が生じます。

そのため、条件分岐で選択している位置が選択肢の数を越えた時の処理をしてやります。




「このコモンセルフ11:選択している位置」が「コモンセルフ0:選択肢の数」「より大きい」場合の分岐を指定します。
「上記以外の場合を作成」にチェックが入っていることを確認してください。





いくら下キーを押しても「選択している位置」が選択肢の最大数になるように、「コモンセルフ11:選択している位置」に「コモンセルフ0:選択肢の数」を代入します。






次に「上記以外の場合」のところにカーソルを移動させてください。

選択カーソルを動かす前に光っているピクチャのエフェクトを元に戻す処理をします。




「エフェクト」を選択し、ピクチャ番号に「1600013」を入力して、効果は「カラー補正」を選びます。
赤、緑、青、すべてに0の数値を入力してください。







続いて、変数操作をおこないます。





コモンセルフ13:ピクチャ番号の数値を+2します。










以上で下キーが押された時の処理は終わりです。


 ここまでのまとめ。



さて、次は「上キーが押されたとき」の処理を考えていきますが、ほぼ「下キーが押されたとき」と考え方は同じで、数値が違うだけなので、コピー&ペーストして、数値に修正を加えていくことにしましょう。



条件分岐「セルフ変数12:キー入力受付が2と同じとき」にカーソルを合わせて、青くなる範囲をまるごとコピーして、すぐ下の行に貼り付けてください。











ペーストしたら、一行ずつ数値を修正していきます。



 

修正する箇所は5か所です。

①条件分岐は「セルフ変数12:キー入力受付」は「2と同じ」の時ではなく、「8と同じ」の時に条件を変更します。

②変数操作でセルフ変数11:選択している位置」は「+1」ではなく「-1」に変更します。

③条件分岐を「セルフ変数11選択している位置」が「コモンセルフ0:選択肢の数」「より大きい」場合ではなく、数値「0」「以下」の場合に条件を変更します。

④「セルフ変数11:選択している位置」には「セルフ変数0:選択肢の数」を代入するのではなく、数値「1」を代入します。

⑤「セルフ変数13:ピクチャ番号」は「+2」ではなく、「-2」します。










最後に、決定キーを押したときの処理です。



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


次に、忘れないように「イベント制御」コマンドでウェイト10フレームを挿入します。






表示している選択肢をすべて消去します。




ピクチャ番号100~200くらいをまとめて消去してしまいましょう。












変数操作で「セルフ変数10:選んだ結果」に「セルフ変数11:選択している位置」の値を代入します。










「イベント制御」で「ループ中断」を選んで、ループ内の処理は終了です。



⑥選んだ選択肢の文章を文字列変数に格納する

文字列変数1番に「選択した文」と名前をつけ、選択肢の内容を格納したいと思います。


まず、「イベント制御」の「回数付きループ」を選択し、ループ回数には「1600010」と入力します。













「文字列操作」で「コモンセルフ6:一行切り出し用」に「コモンセルフ5:選択肢」から上一行ずつ切り出していきます。
ループの中の処理はこれだけです。







「ループここまで」の下にとんで、文字列操作をおこないます。




「文字列変数1:選択した文」に「コモンセルフ変数6:一行切り出し用」の内容を代入します。








これでこのコモンイベントの内容は終わりです。

それでは、きちんと表示されるかどうかテストしてみましょう。


テストプレイしてみよう

コモンイベント002「適当なシナリオ」に、前回の続きに選択イベントを挿入していきます。
幼なじみの彼女が遅刻して現れるというところまで作っていたので、それに対する主人公の反応を選択肢にしてみたいと思います。
ウディタの「選択肢」コマンドでは10個まで選択肢が作れますが、今回組んだコモンイベントでは、11個以上の選択肢を表示できます。
試しに、13個ほど選択肢を作ってみましょう。

主人公の反応(セリフ):
遅い!
ボクも今来たところだよ
もうちょっと早く来られなかったのか?
何か急用でもあったのか?
…………。
呼び出しておいて遅刻するなんて、失礼だぞ。
公園で遊ぶ幼女を見てたから、大丈夫。
時間にルーズなのは悪い癖だ。
次にボクが待ち合わせに遅刻しても怒るなよ?
ボクの貴重な30分が無駄にされた件。
花乃が遅刻するのはいつものことだからな。
次に遅刻したら許さないぞ。
この埋め合わせは何をしてもらおうかなあ?

どうでしょう。
13個準備するのはちょっと大変でした。
13個も選択肢があるけど、どれを選んでも結果は同じというものをまずは作ってみましょう。




「コモンイベント002:適当なシナリオ」の最後の行にカーソルを合わせ、「コモンイベント003:選択肢」を呼び出します。
選択肢の数に13を入力し、「選択肢」には上記の13のセリフを入力します。

今回はどの選択肢を選んでも同じ結果になるので、結果は<どこにも代入しない>のままでOKです。





選んだ選択肢の内容を主人公のセリフとして表示させます。

「コモンイベント001:文章表示を挿入」し、立ち絵の表示は「1:笑う」を選択します。
「表示する文章」はチェックボックスにチェックをいれないで、「文字列変数1:選択した文」を選びます。「名前」はチェックをいれて、「ボク」と入力しましょう。


続いてまた「コモンイベント001:文章表示」を呼び出して、立ち絵を「2:意外そう」を選択して、表示する文章には「うぅ……、ごめんなさい。次は気を付けるね。」と入力。名前は「花乃」として、「ボク」のセリフに対する花乃の反応を表示させます。

それでは、いざ、テストプレイ。



画面が選択肢で埋め尽くされてしまいましたが、きちんと表示されました。
上下キーを動かしての選択がきちんとできます。



選択した内容が「ボク」のセリフとして表示されます。



あんまり反省して無さそうな表情の花乃の反応。

とりあえずきちんと動作しました。

0 件のコメント:

コメントを投稿