DynamicAnimationをマップ上で起動【RPGツクールMZ&MVプラグイン】

2021年10月05日

 DynamicAnimationをマップ上から起動します。
 イベント演出からダンジョンのギミックまで使い道は多種多様です。また、戦闘中にも演出用のアニメーションを実行できます。

 ※MZにて並列処理からDynamicAnimationを起動した場合、セーブに失敗することがある重大な不具合を修正しました。最新版への更新をお願いします。(2021/04/24)

 MZ形式のアニメを大量表示すると非常に重いので、MV形式のアニメの使用を強く推奨します。※実際100倍程度負荷に差があります。
 Effekseer側に対応を頂いた結果、大幅(4〜5倍程度)に軽くなった模様です。十分実用に耐えられるようになったのでご検討ください。(2021/02/14)
 https://github.com/effekseer/EffekseerForRPGMakerMZ_Ex


 具体的には、DynamicAnimation用に作成したスキルをプラグインコマンドで指定し、マップ上で再生します。スキルの作成についてはDynamicAnimationおよびDynamicAnimationMZの各ページをご覧ください。

目次


導入方法(install)

更新履歴(history)

サンプル(sample)

MZ版プラグインコマンド(Plugin Command MZ)

アニメーションの表示(showAnimation)

アニメーションの削除(removeAnimation) ver1.10

アニメーションの表示(戦闘)(showAnimationBattle)

アニメーションの削除(戦闘)(removeAnimationBattle) ver1.10


MV版プラグインコマンド(Plugin Command MV)

アニメーションの表示(showAnimation)

共通オプション(commonOption)

マップ用オプション(mapOption)

戦闘用オプション(battleOption)


プラグインパラメータ(Plugin Parameter)

シーン変更時もアニメを維持(keepAnimation)

ロード時にイベントリセット(eventResetOnLoad) ver1.09

並列実行時の有効範囲マス数(targetRangeGrid)

注釈実行時の有効範囲マス数 (noteTargetRangeGrid)


メモ欄&注釈からの起動

途中から再生 ver1.09

注意点


導入方法(install)


 以下のファイルをダウンロードし 、[プロジェクト]\js\plugins に放り込みます。ツクールのプラグイン管理から機能をONにしてください。

MZ版

 NRP_DynamicAnimationMapMZ.js ver1.12(2021/10/05)

 さらに以下のプラグインを最新に更新してください。
 ※バージョンに食い違いがあると動作しない可能性があります。

 NRP_DynamicAnimationMZ.js ver1.16(2021/04/24)
 NRP_DynamicAnimationMV2MZ.js ver1.022(2021/04/14)
 NRP_DynamicMotionMZ.js ver1.12(2021/04/24)

MV版

 NRP_DynamicAnimationMap.js ver1.12(2021/10/05)

 さらに以下のプラグインを最新に更新してください。
 ※バージョンに食い違いがあると動作しない可能性があります。

 NRP_DynamicAnimation.js ver1.24(2021/04/24)
 NRP_DynamicMotion.js ver1.18(2021/04/24)

 ※上記のプラグインよりも、このプラグインは下に配置してください。

オプション(MV&MZ兼用)(option)

DynamicMotionをマップ上で起動(詳細

 NRP_DynamicMotionMap.js ver1.06(2021/05/07)

更新履歴(history)


2021/10/05(ver1.12)

  • 同一マップへの場所移動時にアニメーションが消える不具合修正。

2021/08/07(ver1.11)

  • MZ用アニメーションを並列実行した状態で、アニメーションやモーションを通常実行すると並列アニメーションの終了を待ってしまう不具合修正。

2021/06/05(ver1.10)


2021/04/24 -> 05/15(ver1.09 -> 1.091)

  • 途中から再生に対応。
    <D-StartTiming:30>というように設定すると、アニメーションを30フレーム進めた状態から開始できます。
  • それに伴い『ロード時にイベントリセット』のパラメータを追加。
  • 並列処理からマップ版DynamicAnimationMZを起動した場合、セーブデータの作成に失敗することがある重大な不具合を修正。(MZのみ)
    ※各関連プラグインも最新に更新してください。
  • ゲームロード時、コモンイベントの並列処理で実行したアニメーションに対して途中から再生ができない不具合修正。(05/15 ver1.091)

2021/04/21(ver1.083)

  • イベントのメモ欄に複数のタグが指定されている場合、正常に動作しない不具合を修正。

2021/04/14

  • 画面スクロール時に一瞬だけアニメーションの位置がズレる不具合修正。
    ※NRP_DynamicAnimationMap本体の更新はありません。NRP_DynamicAnimation(MV/MZ)およびNRP_DynamicAnimationMV2MZ(MZのみ)を最新に更新してください。

2020/11/05 -> 12/08(ver1.08 -> 1.082)

  • 外部プラグインとの連携用に調整。
  • ウェイトの数値指定がない場合、アニメーションの終了までウェイトされない不具合修正。
  • アニメーションの位置が『画面』でもスクロールの影響を受けるように修正。
  • MV用のプラグインコマンド『nrp.animation.item』でアイテムの定義も呼び出し可能に。
  • 外部プラグインとの連携用にダメージ処理部分を微調整。(11/08 ver1.081)
    ※各関連プラグインも最新に更新してください。
  • MV版にてエラーとなる重大な不具合修正。(12/08 ver1.082)

2020/10/21

  • MZからMVアニメを正常再生できない重大な不具合修正。
    ※NRP_DynamicAnimationMV2MZを最新に更新してください。


2020/10/19 -> 10/20(ver1.07 -> 1.072)

  • 始点(行動主体)を複数指定できるようにした。
  • ステートのメモ欄も<D-Skill:ID>による自動起動に対応。
  • マップイベントのメモ欄からの実行でエラーになる不具合修正。(ver1.071)
  • 戦闘時に使用すると、セーブに保存できなくなったり、次回の戦闘開始時にエラーになったりする不具合修正。(10/20)
    ※修正箇所はNRP_DynamicAnimationおよびNRP_DynamicMotionなので、そちらを最新にしてください。
  • MV版で実行時に必ずエラーになる不具合修正。(10/20 ver1.072)

2020/10/18(ver1.06)

  • 対象に-2~-4を指定すれば、隊列歩行の仲間も対象にできるようにした。
  • MZアニメのウェイトが正しくかからない不具合修正。
    ※NRP_DynamicMotionMapも最新に更新してください!

2020/10/15(ver1.05 -> 1.052)

  • DynamicMotionのマップ上での実行に対応。
  • 座標がループするとアニメーションが途切れる不具合を修正。
  • MV版にてプラグインパラメータが有効にならない不具合修正。(10/16 ver1.051)
  • 複数の命令を組み合わせた場合、不要なウェイトが発生する不具合を修正。および処理軽量化。(10/17 ver1.052)

2020/10/10(ver1.04 -> 1.041)

  • ツクールMVに対応。
  • MV版の吹き出し表示でフリーズする不具合修正。(10/12 ver1.041)

2020/10/07(ver1.03)


2020/10/05(ver1.02 -> 1.021)

  • 戦闘中の実行機能を追加。
  • 有効範囲について直線距離ではなく長辺を取るようにした。
  • 英語版のプラグインコマンドが抜けていた不具合修正。(ver1.021)
    ※NRP_DynamicAnimationMZ.jsとNRP_DynamicMotionMZ.jsも最新に更新してください。

2020/10/03(ver1.01)

  • <D-Skill:ID>によるイベントメモ&注釈からの自動起動に対応。
    ※NRP_DynamicAnimationMZ.jsもver1.042に更新してください。
  • それに伴い『注釈実行時の有効範囲マス数 』をパラメータに追加。

2020/10/02(ver1.00 -> 1.001)

  • 公開!
  • 並列処理でのwait指定時に想定した動作をしない不具合修正。(ver1.001)

サンプル(sample)



 マップ用に特化したサンプルを用意しましたので、参考にどうぞ。



MZ用プラグインコマンド(Plugin Command MZ)


 ツクールMZとMVでプラグインコマンドの仕様が大きく異なります。MZの場合は、コンボ形式であらかじめ候補が用意されているので便利です。

アニメーションの表示(showAnimation)

 スキルと対象を指定してDynamicAnimationを起動します。
 また、始点を設定すれば、射撃などの始点から対象へと移動するアニメーションを使用できます。
 オプションからはウェイトの有無や画面スクロール連動の有無を設定できます。

スキルID(skillId)

 使用するスキルを選択します。
 このスキルのメモ欄に従って、DynamicAnimationが実行されます。

対象(target)

 アニメーションの対象(終点)を指定します。
 候補からは『このイベント』や『プレイヤー』を選択できます。
 数値を入力すれば、その番号のイベントを対象とします。
 また、-2以下で隊列歩行の仲間を指定可能です。(-2が2人目、-3が3人目……)

 複数指定も可能です。
 "1,2,3"で一つずつ指定。"1~5"で一括指定となります。

 また、数式も指定可能です。例えば……
this._eventId + 1

 はこのイベントのID+1のイベントとなります。
this._eventId ~ this._eventId + 5

 というような複合も可能です。

始点(行動主体)(startPoint)

 アニメーションの始点(行動主体)を指定します。
 DynamicMotionと組み合わせる場合は、ここで指定したイベントが動作を実行します。
 指定の要領は『対象』と全く同じで、複数指定も可能です。


 以下はオプション内に含まれる項目です。

完了までウェイト(wait)

 アニメーションの完了までウェイトします。
 通常はアニメーションの終了を待ちますが、<D-Animation>内のwaitの設定によっては異なるタイミングで完了させることも可能です。

 また、並列処理からプラグインコマンドを呼び出してウェイトを指定した場合は、アニメーションの完了を待ってからループします。この際、プレイヤーの動作は停止しません。

スクロールしない(noScroll)

 アニメーションが画面スクロールの影響を受けなくなります。
 プレイヤーに連動して移動するようなアニメーションを作りたい場合に。

有効範囲(マス)(targetRangeGrid)

 並列処理からプラグインコマンドを実行した際、画面中央〜イベント間の距離がこの範囲(マス数)に収まる場合のみアニメーションを実行します。
 フィールドなどの広いマップで負荷を抑えるための項目です。

 0なら無制限です。未指定の場合は共通設定の値が適用されます。

 ※正確には座標差分の長辺を求めています。X座標の差分が10マス、Y座標の差分も15マスならば、差分は15マスとみなします。

アニメーションの削除(removeAnimation) ver1.10

 実行中のDynamicAnimationの削除を行います。
 削除する条件(AND)を指定してください。

 例えば、『対象』だけを指定した場合、対象に対して表示中のアニメーションを全て削除します。
 『スキルID』と『対象』の両方を指定した場合、両方が一致するアニメーションだけを削除します。

アニメーションの表示(戦闘)(showAnimationBattle)

 戦闘中にDynamicAnimationでの演出を行います。基本的には戦闘背景などの演出を想定しています。


 以下の戦闘中に並列処理を実行するプラグインとの連携をオススメします。というか、下はそのためだけに作ったプラグインです。
 http://newrpg.seesaa.net/article/477740800.html

 必要な場合は使用者や対象の選択も可能です。その際はコンボボックスの候補を参考に条件を設定してください。

スキルID(skillId)

 使用するスキルを選択します。
 このスキルのメモ欄に従って、DynamicAnimationが実行されます。

対象(条件)(targetCondition)

 アニメーションの対象を決める条件を指定します。(複数可)
 具体的な指定方法はコンボボックスの候補を参考にしてください。

 なお、画面対象のアニメーションならば特に対象や使用者を指定する必要はありません。

使用者(条件)(subjectCondition)

 アニメーションの使用者を決める条件を指定します。
 具体的な指定方法はコンボボックスの候補を参考にしてください。


 以下はオプション内に含まれる項目です。

完了までウェイト(wait)

 アニメーションの完了までウェイトします。

アニメーションの削除(戦闘)(removeAnimationBattle) ver1.10

 戦闘中、実行中のDynamicAnimationの削除を行います。
 要領は『アニメーションの削除』と同じですが、条件の指定方法は『アニメーションの表示(戦闘)』と同じになります。

MV用プラグインコマンド(Plugin Command MV)


 MVの場合は、コマンドをテキスト入力する必要があります。以下を参考にしてください。

アニメーションの表示(showAnimation)

nrp.animation.skill 100

 ID=100のスキルのDynamicAnimationを実行します。
 マップ上でも戦闘中でも実行可能です。
 このコマンドを指定する前に、オプション(下記参照)を指定可能です。

 [マップ上の使用例]
nrp.animation.subject 1
nrp.animation.target 2
nrp.animation.wait
nrp.animation.skill 100

 上記の例ではイベントID=1からID=2に向けて、スキルID=100のアニメーションをウェイト指定で放ちます。
 
 [戦闘中の使用例]
nrp.animation.subjectCondition a._actorId == 1
nrp.animation.targetCondition a._enemyId == 2
nrp.animation.wait
nrp.animation.skill 100

 上記の例ではアクターID=1から敵キャラID=2に向けて、
 スキルID=100のアニメーションをウェイト指定で放ちます。
 
 また、以下のようにアイテムでも指定可能です。使い方はスキルの場合と全く同じなので割愛します。
nrp.animation.item 100


 オプションの詳細は以下をご覧ください。
 
共通オプション(commonOption)

nrp.animation.wait

 アニメーションの終了を待ちます。
 並列処理で指定するとアニメーションの終了を待ってからループするようになります。その際、プレイヤーの操作を停止しません。
 
マップ用オプション(mapOption)

nrp.animation.target 1

 イベントID=1をアニメーションの対象とします。
 0ならばこのイベント、-1ならばプレイヤーです。
 -2以下(-2, -3, -4)で隊列歩行の仲間も対象にできます。
 さらに複数指定も可能です。
 "1,2,3"で一つずつ指定。"1~5"で一括指定となります。

 また、数式も指定可能です。例えば……
this._eventId + 1

 はこのイベントのID+1のイベントとなります。
 
nrp.animation.subject 1

 イベントID=1をアニメーションの行動主体(始点)とします。
 複数指定ができることも含め、nrp.animation.targetと要領は同じです。

nrp.animation.noscroll

 アニメーションが画面スクロールの影響を受けなくなります。
 
nrp.animation.range 10

 並列処理イベントとの距離が10マス以内に収まる場合のみ、
 アニメーションを実行します。
 
戦闘用オプション(battleOption)

nrp.animation.targetCondition

 アニメーションの対象を決める条件を指定します。(対象複数可)
 
nrp.animation.subjectCondition

 アニメーションの使用者を決める条件を指定します。
 要領はnrp.animation.targetConditionと同じです。
 
 もっとも基本的には背景など対象を取らないアニメーションを想定しています。
 その場合はこれらの指定も不要です。

プラグインパラメータ


シーン変更時もアニメを維持(keepAnimation)

 メニューや戦闘などシーン変更時もアニメの表示を維持します。
 MZ形式のアニメについては不完全です。
 Effekseerのアニメを途中から再開する方法が分かりませんでした。無念……。

ロード時にイベントリセット(eventResetOnLoad) ver1.09

 ゲームをロードで開始した際、DynamicAnimationを実行中のイベントの処理状況をリセットします。
 通常、イベントの処理状況はセーブ&ロード後も保持されます。ですがそれによって、ロード時に半端な状況で処理が始まり、アニメーションが途切れてしまう問題が起こりえます。
 ロード時に処理を先頭から開始させることで、そういった問題に対処します。

 なお、初期状態で有効になっています。

並列実行時の有効範囲マス数(targetRangeGrid)

 並列処理からプラグインコマンドを実行した際、画面中央〜イベント間の距離がこの範囲(マス数)に収まる場合のみアニメーションを実行します。
 こちらは共通設定値です。
 空白の場合は無制限となります。

注釈実行時の有効範囲マス数 (noteTargetRangeGrid)

 注釈からアニメーションを実行した際、画面中央〜イベント間の距離がこの範囲(マス数)に収まる場合のみアニメーションを実行します。

メモ欄&注釈からの起動


<D-Skill:ID>

 というように、マップイベントやステートのメモ欄にスキルIDを指定すると、そのアニメーションが自動実行されます。煙突や燭台などのオブジェから炎をまとうステートまで様々な用途に活用できます。



 また、イベントページ先頭の注釈に記入しても有効です。
 こちらは現在のページ毎に状態を切り替えることも可能です。

 同時に指定した場合はページ毎の指定が優先されます。

20201003_DynamicSkillNote.jpg

途中から再生 ver1.09


 アニメーションを進めた状態から再生します。マップを切り替えた直後から表示して欲しい演出などに有用です。


 以下をスキルのメモ欄へ設定してください。
<D-StartTiming:?>

 ?=30ならば、アニメーションを30フレーム進めた状態から開始します。
 ※標準では1フレーム=1/4秒です。

 以下はこの機能を使用したサンプルです。
 http://newrpg.seesaa.net/article/477704129.html#sunshine

注意点


 MZアニメーションが非常に重いのは前述の通りです。
 MVアニメーションを使用しているのに、動作が重い場合は以下のような原因が考えられます。

  • 色調変更を使用している。
    代替案として、アニメーションの画像ファイル自体をペインターなどであらかじめ変更しておく方法があります。

  • 対象のフラッシュを多用している。
    limitFlashで制限が可能です。

  • 効果音を多用している。
    limitSoundで制限が可能です。

  • 動作に影響を与える外部プラグインを使っている。
    特にデバッグ系やアニメーション系のプラグインにご注意ください。

 F2でFPSを表示できますので、どれぐらいの重さになるかが確認できます。
 通常、処理の重さはアニメーションの表示間隔(interval)に依存します。単純なアニメーションをinterval = 1/2や1/4で表示した程度で動作が重くなることはまずありません。重くなる場合は何らかの要因がある可能性が高いです。

 なお、戦闘中のDynamicAnimationと完全に同じ動作を保証できるものではありません。どうにかこうにかいい感じになるよう調整していますが、ダメなこともあるかもしれません。
 特にスクロール時の挙動に対応できていない部分があります。

 >RPGツクールMZ&MV目次に戻る
posted by 砂川赳 at 11:26 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする