文章トゥルル

表示速度とタイミング

l6_1

l6_2

文章を表示する時、

  • ウィンドウを付けて名前と顔グラを表示
  • ドラクエっぽく音がトゥルルと鳴る

このような処理を考えてみましょう。

処理例1 – 文章+並列常時

【起動条件:呼び出し】

【起動条件:並列】

文章表示関連のシステム変数、システム文字列をいくつか使います。仕様はマニュアルで確認してください。
だいたい上手くいきますが、文字数のカウントが微妙です。 例えば¥c[1]はこのカウント方法では5文字ですが、実際の表示は0文字なので音が多めに鳴ってしまいます。 特殊文字が現れた場合に¥から]までをカウントしない処理や、]で閉じられない特殊文字(¥Eとか)も分岐で回避することになります。 そうなると、かなり複雑な分岐になりそうですね。
あと、音が鳴っている最中に文章を送ると顔グラフィックが切り替えられなかったりするので、 33行目のループの中にもSys12が0のときの分岐でイベント処理中断+ピクチャ消去を入れたり、 文章表示同士の間に1フレームウェイトを入れたり、色々な回避処理が必要になります。
また、@が書かれていない場合にも0番の顔グラが表示されてしまいます(文字列を数値に読み込むと0になるため)ので、そのあたりの回避も必要です。

このままではかなり不完全ですね。

処理例2 – ピクチャ使用、呼び出し型

【起動条件:呼び出し】

【起動条件:呼び出し】【入力:Cself5】

渡された文章の1行目を切り出し、@を消去してから変数に文字列を代入しています。(変数操作で、数値に1600005を入力)
変数操作+に【ピクチャの文字列、表示完了?】があるので、それが1になるまで音を鳴らし続けます。 表示が完了したら文末にポーズカーソルもどきを表示して、キー入力でピクチャを消去しています。コメント文の数字はピクチャ番号メモ。

ここでは文のスタイルを変えないように@数字で話者を指定していますが、 ピクチャでやるなら必要ないかもしれませんね。 引数Cself[0]でSDB24を読むようにすれば少し便利になりそうです。

処理例 – 会話文は【文章の表示】だけで済ませたい人向け

【起動条件:自動】(一度だけ)

【起動条件:並列】
文章を画面外に表示し、全く同じ速さでピクチャ文字列を表示する方法。
一見良さそうですが、実際動かしてみるとバグがあります。 変数操作+のピクチャ文字列表示完了?が1になるのは表示完了してから1フレームかかるために、 絶妙なタイミングでキーを押すと次の文章が表示されなかったりします。
音を鳴らす処理をディレイを使って工夫したり、文章を瞬間表示してすぐに消し、このコモンを並列から予約で呼び出す形にしたり、 細かいバグをどうにかする力量が必要になります。ウディタのシステム変数の挙動を完全に把握していない場合は、 こういうシビアな並列の使い方は避けたほうが良さそうです。

はじめにお読みください

ここはWOLF RPGエディター(通称ウディタ)のイベント作成において、 ひとつのお題に対していくつかの考え方を示すページです。正解や不正解ではなく、色々な考え方を示していけたらいいなと思っています。詳しくは以下をお読みください。

続きを読む