ウディタ講座 第6回 戦闘中の顔グラ変更
ウディタのデフォ戦では画面下に味方キャラの顔グラが表示されますよね。通常はメニュー画面と同じ顔グラが表示されますが、実はメニュー画面とは異なる顔グラを表示することもできるって知ってました?
cdb[10:<スロット>:2]に「一時上書き画像ファイル」という欄があり、ここに画像ファイル名を指定するとその画像が優先して表示される仕様になっているんです。
※空欄にすると通常の顔グラが表示されます……というかデフォルトが空欄です。
この機能を利用すればキャラの消耗度に応じて顔グラを変えるなんてことも可能です。実際に試してみましょう。
この講座でやること
・UDBに顔グラ登録欄を作成
・HP減少時・戦闘不能時に、上記で登録した顔グラに変更(味方単体描画コモンを改造)
Step1 顔グラの用意
何はともあれ、まずは顔グラを用意することから始めましょう。通常時・HP減少時(*_yowari1)・戦闘不能時(*_yowari2)の顔グラを作成して、データフォルダに入れておきます。デフォルト設定の方は『Data/Picture』フォルダに入れてください。私は顔グラは『Data/Face』フォルダに入れることに決めているのでここに入れました。この辺りはご自由に……
こんな感じです。うちの子の弱った顔、可愛いですよね。以降は『Data/Face』フォルダに入れたと仮定して話を進めます。
Step2 UDBに顔グラを登録
UDBに戦闘時の顔グラを登録する欄を作成します。UDBのタイプ19番に空きがあるのでここを使用します。
タイプの内容設定は以下のようにします。
・タイプ名を「顔グラ変更」にする
・データIDの設定方法は「指定DBの指定タイプから」を選択してcdb[0]を参照
※cdb[0]とは味方キャラデータです。
・項目は上3つを使用。型は全て「文字列」にする。
・項目名は順に「通常」「HP減少」「戦闘不能」とする。
・「▼特」から「ファイル読み込み(文字列)」で初期フォルダに「Face」を指定
最終的にこんな感じになればOKです。
「データ数の設定」で全キャラが表示されるだけのデータを確保して、顔グラを登録していきます。「通常」には元気な時の顔グラ(メニュー画面と同じもの)を、「HP減少」には若干弱り気味の、「戦闘不能」には戦闘不能時の顔グラを指定します。
Step3 味方単体描画処理の確認
登録した顔グラを描画する処理を作っていきましょう。例のごとくF7キーを使って調べると、コモン178『X[戦]味方欄_単体描画』の254行目で描画していることが分かります。このコモンは名前の通り、引数で指定したスロットの味方キャラ情報(顔グラ・HP・SP等)を表示する処理です。
実際に該当部分を見てみましょう。254行目では文字列変数1600007(コモンセルフcself[7])のファイルを表示しています。cself[7]へのファイル名の代入を行っている部分を探すと……この少し上、223~228行目が怪しそうですね。
223~228行目では『一時上書き画像ファイル』が空白なら通常の顔グラを、空白でなければ『一時上書き画像ファイル』を表示する設定になっていることが分かります。要するにここよりも上でHPを調べて、その結果に応じて『一時上書き画像ファイル』に表示したいファイル名を代入すればOKということですね。
Step4 味方単体描画処理の改造
実際に改造してみましょう。念の為、コモン178『X[戦]味方欄_単体描画』をコモン218にコピーして、こちらを編集していきます。私はこんな風に改造してみました(下図で色が変わっている部分です)。
キャラ番号・現在HP・最大HPは取得済なので改めて取得する必要はありません。HP割合はcself[59]で計算しています(HP割合=現在HPx100/最大HPです)。
顔グラの表示条件は以下のように設定します。優先順位は①>②=③です。
①HPが0の時、「戦闘不能」の顔グラを設定
②HPが0でなく、かつ、HP割合が25%以上の時、「通常」の顔グラを設定
③HPが0でなく、かつ、HP割合が25%未満の時、「HP減少」の顔グラを設定
ポイントは①の条件が「HPが0」であって「HP割合が0%」ではないことです。これは例えば現在HP=1、最大HP=1000の場合を思い浮かべてください。HP割合は1x100/1000=0で0%という計算になりますが、HPは0ではないので戦闘不能ではないはずです。
なお、顔グラファイル名はudb[19]から一旦cself[5]に読み込んだ後、cdb[10:<このキャラの戦闘スロット>:2]に書き込んでいます。可変DBへの文字列の書き込みは、文章表示の時と同様に\cself[5]を使用しましょう。
Step5 テストプレイ
お待ちかねのテストプレイの時間です。
・HPが25%を下回った時・戦闘不能になった時に顔グラが変化したか?
・回復すると顔グラも元に戻ったか?
これらの点を重点的にチェックしてください。
補足:応用例
今回は通常時・HP減少時・戦闘不能時の三択にしましたが、もちろんもっと細かく顔グラを変えることもできます。凍結・黒焦げ・メタル化・ミンチ・真っ二つなどなど……
当然ながら条件式は複雑になりますし、素材作成の手間も増えますのでご利用は計画的に!