[RGSS3]ツクールVXAceのスクリプトで敵キャラのHP増減を行う方法
RPGツクールVXAce & MVスクリプトwikiとプラグイン

[RGSS3]ツクールVXAceのスクリプトで敵キャラのHP増減を行う方法 > ツクールVXAceスクリプト(RGSS3)wiki

トップページ > ツクールVXAceスクリプト(RGSS3)wiki > 敵キャラのHP増減

敵キャラのHP増減 / ツクールVXAceスクリプト(RGSS3)wiki

ツクールVXAceで敵キャラのHP増減をスクリプトで行うなら以下の通りです。


$game_troop.members[敵ID].hp += 増減する値


サンプルコード(モンスター1のHPを15減らす)

$game_troop.members[0].hp += -15
#または
$game_troop.members[0].hp -= 15

上下の式は同じ意味を持ちます。

「=」にすることによって値を代入することも出来ます。


サンプルコード(モンスター1のHPを15にする)

$game_troop.members[0].hp = 15

または以下の通りです。

value = operate_value(増減, 定数か変数か, 値)
#増減 0:増やす 1:減らす
#定数か変数か 0:定数 1:変数
#値 定数のときは定数を、変数のときは変数IDを入力
iterate_enemy_index(敵ID) do |enemy| #敵ID=-1以下で敵グループ全体
return if enemy.dead? #敵がすでに戦闘不能だった場合はここで中断
enemy.change_hp(value, 戦闘不能を許可するか)
#true:戦闘不能を許可  false:戦闘不能を禁止
if enemy.dead?
enemy.perform_collapse_effect
end
end

サンプルコード(モンスター1のHPを15減らす、戦闘不能を許可)

value = operate_value(1, 0, 15)
iterate_enemy_index(0) do |enemy|
return if enemy.dead?
enemy.change_hp(value, true)
if enemy.dead?
enemy.perform_collapse_effect
end
end


コード解説


上記の例で、長いコードはイベントコマンドで行うのと同じ方法です。

短いコードの例でも敵のHPの増減は問題なく行われますが、敵のHPが0になった際のアニメーションは行われません。

長いコードの方は様々なシチュエーションに対応するために長くなっているのです。

慣れないうちは長い方を使うことをお勧めします。



1行目:value = operate_value(増減, 定数か変数か, 値)


ここではイベントスクリプトで行うことを想定しているので、なるべく行の長さが短くなるようにvalueという変数にoperate_valueの計算結果を代入しています。

このoperate_valueメソッドですが、単に増減する値(または変数)を返すだけなので、4行目に直接値を入れることで省略可能です。


2~8行目:iterate_enemy_index(0) do |enemy| ~ end


独特な記法ですが、これはブロックと呼ばれるもので、doの前の要素の数だけ| |内を変数としてendまで処理を繰り返すという意味になります。

興味のある方は「Ruby ブロック」と検索してみて下さい。

ここではiterate_enemy_indexメソッドで取得した敵のデータの数だけ{}内の処理を繰り返すという意味合いです。

idが0以上であれば対象の敵は単体のため、do~endを行う必要はないのですが、-1だった場合は敵全体を指すため、敵の数だけ処理を繰り返す必要が出てくるのです。

こうした想定があるため、わざわざ繰り返しの中で処理を行っているのです。


3行目:return if enemy.dead?


対象の敵が戦闘不能だった時には以下の処理は無駄になるため、その場合はここで処理を止めるようにしています。

returnを使用することによって不用意な処理を止めることが出来ます。


4行目:enemy.change_hp(value, 戦闘不能を許可するか)


敵のHPを増減させるだけならこの行のみでokです。

"change_hp"とあるように敵のHPからvalueパラメータで指定した値を増減させます。

"戦闘不能を許可するか"パラメータではtrueを入れて戦闘不能を許可していた場合は計算結果が0以下だったときはHPを0にしますが、falseを入れて許可しなかった場合はHPには1が代入されます。


5~7行目:if enemy.dead?


敵のHPを増減させた結果敵のHPが0になっていた時は崩壊アニメーションを表示させる必要があります。

このif文は上で行った計算の結果、敵のHPが0だった場合は崩壊アニメーションを表示させるようにしています。


6行目:enemy.perform_collapse_effect


"perform_collapse_effect"というメソッド名の通り、ここで敵のバトラー画像をアニメーションさせて消しています。


ある程度決まった場面で使用されるなら最低限以下のコードであれば、通常通りの処理がなされます。

enemy.change_hp(value, true)
enemy.perform_collapse_effect if enemy.dead?
 

ツクールVXAceスクリプトリファレンスwikiトップページへ戻る




オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。



表示変更

任意の色に変えるときはテキストボックスをクリックしてカラーピッカーで決め、変更ボタンを押してください



文字色変更





コード色変更





コード背景色変更





背景色変更