使用ソフトウェア: Rpgmaker MV
敵が攻撃を受けたときにゲームの速度を落とすか、一時的にゲームをフリーズさせるプラグインを探しています。
より具体的に言うと、アクターの攻撃アニメーションが完了した直中または直後に、ゲーム画面の速度を遅くしたいのです。
私が求めている機能の例は、こちらのプラグインで実装されていますが、画面を振るのではなく、少しだけゲームの速度を落としたいのです。
これまでに、Google、Reddit、Steam でこの話題に関する投稿を見かけたことがないため、ここで質問させていただきました。アクターが攻撃した際にゲームを一時的に「フリーズ」させるプラグインやコードをご存知の方はいらっしゃいますか?
ご助言いただけますと幸いです!
Baz
2
これ専用のものも見つからなかったので、スタートポイントとして使える小さなプラグインを作ってみました。これを js/plugins フォルダ内に HitStop.js として保存してください(パラメータを読み取る際に名前が重要になるため、この名前にする必要があります)。その後、プラグインマネージャーで有効にします:
/*:
* @plugindesc 敵がダメージを受けた際、戦闘を短く一時停止させる。
* @param Frames
* @desc 一時停止するフレーム数(60 = 1秒)
* @default 10
*/
(function() {
var frames = Number(PluginManager.parameters('HitStop')['Frames'] || 10);
var hitStop = 0;
var _Game_Enemy_performDamage = Game_Enemy.prototype.performDamage;
Game_Enemy.prototype.performDamage = function() {
_Game_Enemy_performDamage.call(this);
hitStop = frames;
};
var _Scene_Battle_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function() {
if (hitStop > 0) {
hitStop--;
return;
}
_Scene_Battle_update.call(this);
};
})();
このプラグインは、敵がHPダメージを受けた際に、数フレーム間、戦闘シーン全体を凍結(一時停止)させます。デフォルトのバトルシステムでは、攻撃アニメーションが終了した後にダメージが適用されるため、ご希望のタイミングで機能するはずです。
完全に停止させるのではなく、遅延させたい場合は、return; を if (hitStop % 2) return; に変更してみてください。これにより、隔フレームでのみ更新されます。ただし、YanflyのBattle Engine Coreや他のアクションシーケンス系プラグインと併用した場合の動作については不明です。それらのプラグインではタイミングが異なる可能性があります。