↓前回の解説(先に見ておいてね)
今回は以前に投稿した「戦闘に立ち絵を表示する」の追加解説なのよ。
ダメージをうけてHPが減ったら立ち絵が別のものに変わっているわね。
このように、「戦闘での立ち絵を状況に応じて変化させる」ということをやってみようと、そういう解説をするのよ今回は。
可変DBに立ち絵(弱)の項目を追加する
まずは可変DB「主人公ステータス」の設定画面を開いて、前回作った立ち絵を登録する項目の下に、弱っている場合の立ち絵を登録する「立ち絵(弱)」を追加しましょう。下にある挿入やコピーのボタンを使うといいわ。
※これは基本システムに元からあったわけじゃなく末尾に新規作成した項目だから、別に途中に追加しちゃっても問題ないわ。
そしたら通常分の立ち絵に加えて弱っているバージョンの立ち絵を登録。
※ちなみに今回の立ち絵素材は「キャラクターなんとか機」で作成したものを使わせていただいたわ。
これでDBの準備はOK。
戦闘中のHP情報はどこに格納されているのか
コモンをいじる前に事前説明。
弱っている場合にダメージ差分の立ち絵を表示させるということは、戦闘中のHP残量をコモンに取得させる必要があるわよね?
そもそも戦闘中のステータス情報がどこに格納されているのかというと、
可変DB10番「×┏ 戦闘一時ステータス[基]」というDBなの。ここに敵味方の能力値が一時的に格納されて、増えたり減ったりなんだりと処理されているのよ。
なので現在のHP残量が知りたい場合はここ、項目5番「HP」を参照すればいいわ。
そして最大HPはすぐ下の6番、ではなくて、
44番「[一時]計算済みMaxHP」を参照して頂戴。装備品や状態異常などの変動を含めた値が格納されているから、こっちが最終的な最大HPということになるわ。
※ちなみにこのDB情報を取得するには、主人公IDではなく「どのデータIDにどの主人公情報が一時格納されているのか」という情報も必要になるわ。基本システムではこれを「対象戦闘スロット」と呼んでいるのだけど、これについては次項で説明するわね。
戦闘画面用の立ち絵表示コモンを修正する
それじゃコモンの修正に入りましょう。まずは前述した対象戦闘スロットの取得。
前回の解説では、立ち絵コモンの呼び出し元である192番「X┃┣◆味方コマンド選択」のセルフ変数33から主人公IDを取得していたわよね?
対象戦闘スロットも同様にこのコモンのセルフ変数から取得できるわ。0番に入っているわよ。
入力設定の3番に「対象戦闘スロット」を追加して頂戴。初期値を変数呼出し値である「1600000」に設定すれば、勝手に呼び出し元コモンからセルフ0番を読み込んでくれるわ。
そしたらHP情報を読み込み処理するためのセルフ変数も用意しましょう。現在HPと最大HPと、その2つから現在のHP割合を計算するための変数3つよ。
それじゃイベントコマンドの修正に入るわね。まずは分岐1番の直後にDB読込を追加。前述した戦闘用一時DBから、対象戦闘スロットでデータIDを指定してHPと最大HPの値を読み込むのよ。
→■DB読込(可変): CSelf24[HP] = 可変DB[ ×┏ 戦闘一時ステータス[基] : CSelf2[対象戦闘スロット] : HP ] (10 : – : 5)
→■DB読込(可変): CSelf25[MHP] = 可変DB[ ×┏ 戦闘一時ステータス[基] : CSelf2[対象戦闘スロット] : [一時]計算済みMaxHP ] (10 : – : 44)
そしたら読み込んだ値から現在HPの最大HPとの割合(%)を計算。現在HPを100倍して最大HPで割れば%が出るわ。
→■変数操作: CSelf26[HP%] = CSelf24[HP] * 100
→■変数操作: CSelf26[HP%] /= CSelf25[MHP] + 0
次に計算したHP残量の割合を使った条件分岐を作成。今回は「HPが50%超で通常の立ち絵、50%以下なら弱バージョンの立ち絵を読み込む」ということにしましょうか。
→■条件分岐(変数): 【1】 CSelf26[HP%] が 50 超 【2】 CSelf26[HP%] が 50 以下
→-◇分岐: 【1】 [ CSelf26[HP%] が 50 超 ]の場合↓
→-◇分岐: 【2】 [ CSelf26[HP%] が 50 以下 ]の場合↓
→◇分岐終了◇
分岐1(HP50%超)は通常の立ち絵だから、下にあるセルフ5番へのDB読み込みを切り取り移動してね。
→■DB読込(可変): CSelf5[立ち絵File] = 可変DB[ 主人公ステータス : CSelf1[主人公ID] : 立ち絵 ] (0 : – : 60)
分岐2(HP50%以下)は弱バージョンの立ち絵を読み込ませるためのDB読み込みを新規追加。
→■DB読込(可変): CSelf5[立ち絵File] = 可変DB[ 主人公ステータス : CSelf1[主人公ID] : 立ち絵(弱) ] (0 : – : 61)
立ち絵コモンの改造はこれでOKよ。
そしたら最後に、「X┃┣◆味方コマンド選択」コモンを開いて、今回修正した立ち絵コモンを呼び出しているカ所を以下のように修正して頂戴。
新たに追加した入力項目「対象戦闘スロット」が0になっていると思うから、それを1600000に修正するのよ。呼び出している3カ所すべて同じように修正してね。
コモンの修正は以上。これでHPが半分より多い状態なら通常の立ち絵、半分以下になった場合は弱っている方の立ち絵が表示されるようになったはずよ。
戦闘用立ち絵コモン(ダメージ差分対応)を試してみる
それじゃテストしてみましょう。先ほど用意したメイドさんにご登場いただいて、
戦闘開始。まだHPはたくさんあるから通常の立ち絵が表示されたわね。
そのまま戦闘してダメージを受けると、
以上で戦闘用立ち絵のダメージ差分の解説は終了よ。今回はHP半分超と半分以下の2種で区切ったけど、複数の立ち絵を用意してもっと細かく刻んでもいいわよ。
コメント
ウディタ初心者です。戦闘中に主人公のHPが最大値の50%を下回ったときに主人公以外の仲間も立ち絵が変化してしまうのですがどうすればよいでしょうか…
原因がわかりました。
1つ前の記事で、「X┃┣◆味方コマンド選択」で立ち絵コモンを呼び出している箇所が3つほどあると思いますが、そちらを開いてみてください。おそらく今回の記事で新たに追加した入力値3「対象戦闘スロット」の値が、初期値に設定した1600000ではなく0になっていると思います。そこを1600000に修正してあげてください。
この記事でコモン呼び出しの修正を書いていなかったことが原因ですね。すいません記事はあとで修正しておきます。
解決しました!ありがとうございます!