HPの増減 / ツクールMVスクリプトリファレンスwiki
ツクールMVでHPの増減をスクリプトで行うなら以下の通りです。
this.changeHp($gameActors.actor(アクターのID), 変化量, 戦闘不能を許可するか[true or false])
サンプルコード(アクターIDが2のアクターのHPを100減らす。戦闘不能を許可する)
this.changeHp($gameActors.actor(2), -100, true)
コード解説
変数により増減を決めたい場合、変化量のパラメータに変数を代入してください。
"changeHp"内部では指定したアクターのhpが減らす値よりも小さかった場合(つまり致死量の場合)かつ、戦闘不能を許可していない場合、hpを1残しhpを増減させ、戦闘不能を許可しており、死んでしまった場合は死亡アニメーションを実行するという処理を行っています。
似たようなメソッドに"gainHp"というものがありますが、こちらは死亡時の処理は含まれていないため、死亡時のアクションがありません。
ちなみに以下のようなものです。
$gameActors.actor(アクターID).gainHp(変化量)
そのシチュエーションによって使い分けてください。
HPを増やすときは「戦闘不能を許可する」のパラメータはtrueでもfalseでも構いません。
パーティー全体にHPの増減処理を行いたい場合は以下の通りです。
$gameParty.members().forEach(function(actor) {
this.changeHp(actor, 変化量, 戦闘不能を許可するか[true or false]);
}.bind(this));
サンプルコード(パーティー全体のHPを100マイナス、戦闘不能を許可)
$gameParty.members().forEach(function(actor) {
this.changeHp(actor, -100, true);
}.bind(this));
$gameParty.members()で現在パーティーにいるメンバー全員の情報を配列として取得しています。
"forEach"メソッドとは配列の要素の数だけ{}内の処理を繰り返すというものです。
{}内では要素は"function(変数)"の変数に代入されています。(上記の例ではactor)
上記の例では要素の数(パーティーにいるアクターの人数分)だけHPの増減を要素(アクター)に対して繰り返しています。
3行目にあるbindメソッドはforeach内のfunctionで使用するthisをGame_Interpreterに指定しています。
この記述が無いとthisが意図していない"Window"を指定してしまい、"TypeError: undefined is not a function"というエラーを吐いてしまいます。
javascriptでは"this"は様々な意味を持つため、このような要素指定が必要になります。
ツクールMVスクリプトリファレンスwikiトップページへ戻る
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。