ツクールMVではコモンイベントでポップアップが表示されない?
今制作中のゲームですが、ツクールMVだとデフォルトの戦闘はプラグインを使えば、アクターのHPの増減や敵キャラのHPの増減などをポップアップできます。
ただ、戦闘のイベント内で、HPの増減を行う場合、該当するプラグインが見つからず困りました。
戦闘はクイズバトルにしているため、HPのポップアップは欲しい機能でしたが、何とかプラグインなしでできないかと検索してみたら…
ありました!
どちらも敵キャラとアクターの攻撃力と防御力によって、HPの増減ができ、かつポップアップもするようになりました。
ということで、今回は備忘録の意味もかねて、スクリプトでアクターや敵キャラのHP増減をポップアップできるスクリプトをご紹介します。
まずは、敵キャラのHP増減のポップアップから
まず、これが敵キャラのHPを140P減らして、それがポップアップできた画面です。
最初は、アクターの攻撃力をそのまま反映させていましたが、敵キャラの防御力も考えると、これだと敵キャラに応じて個別にやらないといけなくなり…
せっかくのデータベースが活かせない!ということで、変数に入れてアクターの攻撃力から敵キャラの防御力を引くとこんな感じのイベントになりました。
まず、変数21番にアクター2の攻撃力を代入します。
やり方としては、こんな感じです。
同じようにして、モンスターの防御力を変数25番に入れました。
後は、与えるダメージとして、変数26番に、こちらの計算式を入れました。
$gameVariables.value(21) - $gameVariables.value(25)
単純にアクターの攻撃力からモンスターの防御力を引いただけです。
ここから、今度はモンスターのHP増減イベントから、先ほどの与えるダメージが入った変数26番を引きます。
次に、与えたダメージをポップアップさせるには、こちらのスクリプトを使わせていただきました。
this.iterateEnemyIndex(-1, function(enemy) {
enemy.startDamagePopup();
}.bind(this));
これだけで、敵キャラに与えたダメージをポップアップできます。
[speech_balloon_left1 user_image_url=”https://pd-present.moo.jp/PC_otaku/wp-content/uploads/2023/05/kao.png” user_name=”ワンポイント!”]※追記
こちらも条件分岐を入れないと、モンスターのHPが攻撃によって回復=増えてしまったので、こちらにしてみました。[/speech_balloon_left1]
敵キャラが複数体いる場合は、もう少し厄介ですが、私のゲームでは1体ごとにクイズバトルなので、ここで完了です。
スクリプトには詳しくないのであれですが、もし疑問が出てきたら、こちらで聞いてみると答えが返ってくるかもしれません。
次にアクターのHPの増減ポップアップ
こちらも検索して見つけたものですが、ちょっとコードは長くなりますが、ちゃんとバトルイベントでもアクターのHPが減り、緑の文字でポップアップしています。
それでは、イベント内容を見てみますね。
先ほどのモンスターの時と同じように、まず変数22番にモンスターの攻撃力を入れます。
次に、アクターの防御力を変数23番に入れます。
ここでも上記と同じように、被ダメージを変数24番に計算式を代入します。
[speech_balloon_left1 user_image_url=”https://pd-present.moo.jp/PC_otaku/wp-content/uploads/2023/05/kao.png” user_name=”ワンポイント!”]※この数式逆でした!(2022/3/3 更新)[/speech_balloon_left1]
$gameVariables.value(22) - $gameVariables.value(23)
正しくは、こちらにして、HPを減らすイベントを組んでください。
$gameVariables.value(23) - $gameVariables.value(22)
なので、先ほどのモンスターに与えるダメージと同じようにして、HPを減算し、戦闘不能も許可しておきましょう。
加えて、もしアクターの防御力がモンスターの攻撃力を上回ると、攻撃を受けているのにHPが増加してしまうので、こちらのように条件分岐を入れるといいみたいです。
アクターの防御力がモンスターの攻撃力を上回ったら、0と表示させる感じです。
まだ探せば粗が見つかりそうではありますが、修正点を入れておきますね。
こちらのポップアップスクリプトは、ちょっと長いですが、私のゲームではこちらの方法でしか動きませんでした。
var battler = new Game_Battler();
battler.gainHp(- $gameVariables.value(24));
battler.startDamagePopup();
var damage = new Sprite_Damage();
damage.x = 400; damage.y = 300;
damage.update = function(){
Sprite_Damage.prototype.update.call(this);
if (!this.isPlaying()) this.parent.removeChild(this);
};
damage.setup(battler);
SceneManager._scene._spriteset.addChild(damage);/* Your code... */
gainHpの後のかっこの中には、定数を入れる方法が載っていたのですが、頑張って、無理やり被ダメージの変数24番を入れてみました。
私はプラグインやスクリプトがわからないので、もしかしたら誤った方法かもしれませんので、わからないときにはこちらで質問してみてください。
最後にまだテスト段階ではありますが、今回のHPの増減がポップアップする様子を動画に撮ってみたので、参考にしてみてください。
それでは、RPGツクールMVでアクターと敵キャラのHPをポップアップさせるスクリプトのご紹介でした。
記事が参考になりましたら、嬉しいです!^^