DynamicAnimation&Motion サンプル技(合体技)【RPGツクールMV&MZプラグイン】

2021年04月09日

 このページはDynamicAnimationおよびDynamicMotionの解説の一部です。
 ※MZ版(DynamicAnimationMZ, DynamicMotionMZ)でも有効です。

 ロマン中のロマン――合体系のサンプル技を紹介していきます。
 前提として、以下のプラグインとの併用を想定しています。

 合体技の実現(NRP_CombinationSkill)

 これの導入により『$actor(id)』や『$cs(id)』関数で、合体技に参加するアクターを取得できるようになります。
 また『$css(id)』関数ではスプライトを取得できます。
 ※DynamicAnimation ver1.09より、$cssへの参照は不要となりました。全て$csだけで完結します。

 どうしても記述が複雑になるので、DynamicAnimation&Motionの定義をtxtから読み込むプラグインでテキスト編集すると便利かもしれません。
 ただし、<CS_Actors:1,2>などの記述まで、テキスト内に含まないように気をつけてください。あくまで合体技プラグインの記述なので、このプラグインでは処理できません。

目次



X斬り(2020/11/29更新)


 二人のアクターが交差するように敵を斬ります。


 以下はID=1(アレックス)と2(ブライアン)による例です。
<CS_Actors:1,2>
<D-Setting:NoStep&Sync> // 並列モードで実行

// アレックス:対象の中心を基準に移動
<D-Motion:crash>
performer = $cs(1) // 1: アレックス
ex += 120 * mirroring // 目標から右に120
ey -= 120 * mirroring // 目標から上に120
frame = 5
</D-Motion>

// ブライアン:対象の中心を基準に移動
<D-Motion:crash>
performer = $cs(2) // 2: ブライアン
ex += 120 * mirroring // 目標から右に120
ey += 120 * mirroring // 目標から下に120
frame = 5
wait = 10 // 少しだけ待つ
</D-Motion>

// 二人同時に敵の向こう側まで移動
<D-Motion:pierce&attack>
performer = [$cs(1),$cs(2)] // 二人
ex = defaultX - 120 * mirroring // 対象から左に120
</D-Motion>

// X字アニメーション
<D-Animation/>
<D-Animation:wait>
rotation = Math.PI*2 / 4 * mirroring // 90度回転
</D-Animation>

// 二人で戻る
<D-Motion:return>
delay = 5
performer = [$cs(1),$cs(2)] // 二人
</D-Motion>

 説明すべきことは多々ありますが、一つずつ取り上げていきます。

 二行目にある『<D-Setting:Sync>』は並列実行モード(解説)です。これにより、テンプレートに初期設定されたウェイトやディレイを無視します。
 通常『near』『crash』のような移動系テンプレートは、バトラーの移動を待ちます。このSyncの指定があれば待たなくなります。複数のバトラーを動かす際に便利です。

 『performer = $cs(1)』というのは一番目の参加者をモーション対象とするという意味です。事前説明で設定した関数ですね。

 『performer = [$cs(1),$cs(2)]』というように複数人を同時にモーション対象とすることも可能です。
 ちなみに『pierce』型は角度を保ったまま標的の向こうまで移動します。二人まとめて命令しているのに、別地点へ移動するのはそのためです。便利。

 『X字アニメーション』の部分は角度を変えて『7:斬撃/エフェクト』を二つ再生しています。
 もちろん、普通にX字の斬撃アニメーションを作っても構いません。

 ※2020/11/29 mirroring機能によって敵の使用にも対応しました。
  ただし、<CS_Actors:1,2>の記述は変更する必要があります。
  <CS_Enemys>または<CS_Battlers>を使用してください。


合体魔法剣(2020/04/09)


 魔道士が放った魔法を身に受けて、剣士が魔法剣を放ちます。
 スキルのアニメーションには適当な斬撃をセットしています。


 以下はID=1(剣士)と2(魔道士)による例です。
<CS_Actors:1,2>

// 剣士:敵の前まで移動
<D-Motion:near>
performer = $cs(1)
</D-Motion>

// 魔道士:一歩前進
<D-Motion:stepForward&wait>
performer = $cs(2)
</D-Motion>

// 魔道士:魔法ポーズ
<D-Motion:svSpell>
performer = $cs(2)
</D-Motion>

// 魔道士:魔法発動アニメ
<D-Animation:spell&wait>
target = $cs(2)
</D-Animation>

// 剣士:手を挙げるポーズ
<D-Motion:svItem>
performer = $cs(1)
</D-Motion>

// 剣士が水を受けるアニメ
<D-Animation:shot&wait>
id = 82
target = $cs(1)
sx = $cs(2).x // 発射するX座標
sy = $cs(2).y - $cs(2).height/2 // 発射するY座標(中央に調整)

arrival = 7
scale = 0.5
</D-Animation>

// 剣士:武器を振る
<D-Motion:attack>
performer = $cs(1)
</D-Motion>

// 敵に攻撃アニメ
<D-Animation/>
<D-Animation:random&wait>
id = 82
scale = 0.5
</D-Animation>

// 魔道士:戻る
<D-Motion:stepBack>
performer = $cs(2)
</D-Motion>

// 剣士:戻る
<D-Motion:return>
performer = $cs(1)
</D-Motion>

 基本的には『X斬り』で説明したことと変わりません。
 『target』の指定でアニメーションの対象を切り替えています。これにより、発動アニメを魔道士に表示したり、剣士に魔法を放ったりしています。
 また『sx = $cs(2).x』『sy = $cs(2).y - $cs(2).height/2』という記述により、魔道士を始点にして魔法を発射しています。

 デフォルトで作りやすかったので今回は水にしましたが、炎や雷などの魔法剣も同じ用に作ればOKです。

総攻撃(2020/5/2)


 全員で総攻撃をしかけます。


// 全員を合体技の対象に
<CS_Battlers:1,2,3,4>

// メッセージ用(先頭の名前+達)
<CS_UserName:$cs(1).name() + "達">

// 自動前進禁止&非同期
<D-Setting:NoStep &Sync>

// 接近
<D-Motion:near>
performer = $cs() // 全員対象
performerDelay = 2
ey += a.height * (-1.5 + a._battler.index()) // 縦位置調整
frame = 3
wait = 3
</D-Motion>

// 武器振り
<D-Motion:attack>
performer = $cs()
performerDelay = 2
</D-Motion>

// 通常攻撃のアニメーション
<D-Animation>
repeat = 4
id = $cs(r + 1).attackAnimationId1() // 通常攻撃アニメ
interval = 2
wait = 5
</D-Animation>

// 戻る
<D-Motion:return>
performer = $cs()
performerDelay = 2
damageAll = false // 全員が終わるまでダメージ表示禁止
</D-Motion>

 『performer = $cs()』で参加者全員をモーション対象にできます。
 『ey += a.height * (-1.5 + a._battler.index())』はキャラクターの並び順によって、移動先を調整しています。
 『damageAll = false』はreturn型に最初から付属しているダメージ表示機能を切るためのものです。切らないと最初の一人が戻るタイミングでダメージ表示されてしまいます。

 『戦闘行動の強制』辺りと組み合わせて、ペルソナっぽい何かができないかなと思ったり……。

合体魔法(2020/09/07更新)


 複数人で魔法を放ちます。


// 参加者指定
<CS_Actors:2,6>

// 前進禁止
<D-Setting:NoStep>

// 全員一歩前へ
<D-Motion:stepForward>
performer = $cs()
performerDelay = 0 // 各人時間差
</D-Motion>

// 全員魔法モーション
<D-Motion:spell>
performer = $cs()
performerDelay = 0 // 各人時間差
</D-Motion>

// 全員発動アニメーション
<D-Animation:spell>
target = $cs()
nextDelay = 0 // 各人時間差
</D-Animation>

// アニメーション
<D-Animation/>

 上記は二人用ですが、冒頭の<CS_Actors:2,6>の値を変えるだけで、三人でも四人でもそのまま使えます。後はアニメーションを好きなように設定してください。

一斉射撃(2020/5/18更新)


 ※NRP_CombinationSkill ver1.302が必要です。

 全員で一斉に射撃します。
 アニメーションには『82:水/単体2』を縮小したものを設定しています。また<D-Animation:spell>による発動アニメーションも少しいじっています。
 例によって、お好みのアニメーションに変更してください。着弾フレーム(arrival)の値も忘れずに。


<CS_Battlers:1,2,3,4>
<CS_UserName:$cs(1).name() + "達">

// 前進禁止
<D-Setting:NoStep>

// 全員一歩前へ
<D-Motion:stepForward>
performer = $cs()
performerDelay = 1 // 各人時間差
</D-Motion>

// 全員魔法モーション
<D-Motion:spell>
performer = $cs()
performerDelay = 1 // 各人時間差
</D-Motion>

// 全員発動アニメーション
<D-Animation:spell>
target = $cs()
nextDelay = 1 // 各人時間差
</D-Animation>

// 一斉射撃
<D-Animation:shotRandomAll>
repeat = 60
interval = 1/2
sx = $cs(r%4+1).x
sy = $cs(r%4+1).y - $cs(r%4+1).height/2
arrival = 7

</D-Animation>

 『$css(r%4+1)』『$cs(r%4+1)』によって合体技の参加者の座標を参照しています。
 『r%4+1』とは「リピート回数(0始まり)を4で割った余り+1」という意味です。つまり『$cs(1)〜$cs(4)』を巡回しながら参照することで、それぞれの位置からアニメーションを発射しています。

 >DynamicAnimationプラグインに戻る
 >DynamicMotionプラグインに戻る
 >DynamicAnimationMZプラグインに戻る
 >DynamicMotionMZプラグインに戻る
 >RPGツクールMV&MZ目次に戻る
posted by 砂川赳 at 20:00 | RPGツクールMZ&MV | このブログの読者になる | 更新情報をチェックする

特定タイルの通行判定を無視【RPGツクールMZ&MVプラグイン】

2021年04月08日

 通常、ツクールMV〜MZでは、複数のタイルを重ねて配置すると、上のレイヤーの通行判定が優先される仕様になっています。
 例えば以下のように、『通行(4方向)』で制限した段差の上に、○のタイル(花)を置くとすり抜けできてしまいます。


 これは地味に厄介な問題で、マップ作成にこだわる制作者には悩みの種です。

 そこでこのプラグインでは特定のタイルに対して、通行判定を無視するように設定できます。つまり、☆タイルのように下のレイヤーの通行判定を生かしたままにすることができます。
 ※タイルの指定は地形タグで行います。

その他の使用例


半透明の水


 上記の例では、レイヤ1〜2に地面&小物、レイヤー3に半透明の水面を配置することで、水場を表現しています。
 ※レイヤー切替はMZの機能なので、MVでは困難です。
 この場合、通常はレイヤー3の水の通行判定が優先されてしまいます。そのため、水面下の地形によって通行判定を変化させるといった調整が困難です。
 ですが、このプラグインによって水面の通行判定を無視するように設定すれば、水面下の地形の判定も機能させられます。

海岸線


 独自の海岸線をBタイルで作成した例です。複雑な海岸線を作りたい場合など、A1タイルだけでは物足りない場合に使えます。
 通常、×のタイルを海上に配置すると船からも移動不可になってしまいます。かといって、○にすると今度は陸地からも移動可能になってしまいます。
 そこで海岸線の通行判定を無視させることで、海と通行判定を同一にしています。

目次


導入方法(Install)

更新履歴(History)

使用方法(Usage)

メモ欄の指定(Note)

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

対象とする地形タグ(PassageIgnoreTerrain)


導入方法(install)


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

 NRP_PassageIgnoreTile.js ver1.00(2021/04/08)

更新履歴(History)


2021/04/08(ver1.00)

  • 公開!

使用方法(Usage)


 プラグインパラメータで対象とする地形タグを設定してください。
 タイルセットで該当の地形タグを設定すればOKです。

メモ欄の指定(Note)


 タイルセットのメモ欄に指定する方法も可能です。
 以下は設定例です。

<PassageIgnoreTerrain:1,2,5>

 地形タグ1,2,5を設定したタイルを対象とします。

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


対象とする地形タグ(PassageIgnoreTerrain)

 通行判定を無視する地形タグ(1~7)を指定します。
 複数指定も可能です。(例:1,3)

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

DynamicAnimationMZ(戦闘アニメを自動化&超強化)【RPGツクールMZプラグイン】

2021年04月07日

 戦闘アニメを自動化&超強化するプラグインです。
 ※このプラグインはMZ版です。MV版はこちら!

 Click here for the English manual.(By Ryan Bram)

 スキル(アイテム)から自在に戦闘アニメーションを呼び出せます。異なるIDのアニメーションを同時表示させたり、移動させたりすることが可能です。
 非常に自由度の高い仕様になっていますが、テンプレートを呼び出せばメモ欄に一行記述(例:<D-Animation:shot/>)するだけでも動作します。

 さらにDynamicMotionMZと連携すれば、バトラーの動作も自在に設定できます。

 以下は紹介動画です。
※画面が小さい場合は右下の全画面表示をクリックしてください。

目次


導入方法(install)

更新履歴(history)

使用方法(usage)


テンプレートの解説(template)


その他情報(other information)


MV版との違い(difference from MV)

競合について(conflict)


導入方法(install)


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

 NRP_DynamicAnimationMZ.js ver1.14(2021/04/07)

オプション

戦闘モーションを自在に制御(詳細

 NRP_DynamicMotionMZ.js ver1.10(2020/11/20)

MV用アニメーションをMZで扱う(詳細

 NRP_DynamicAnimationMV2MZ.js ver1.021(2020/11/10)

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

 NRP_DynamicAnimationMapMZ.js ver1.081(2020/11/08)

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

 NRP_DynamicMotionMap.js ver1.04(2020/11/08)

DynamicAnimation&Motionの定義をtxtから読み込む(詳細

 NRP_DynamicReadTxt.js ver1.032(2020/10/21)

MV用アニメーションの軽量化(詳細

 NRP_LightAnimationMZ.js ver1.00(2020/09/10)

 ※プラグイン同士の配置順に注意してください。上記の掲載順にそのまま配置すれば安全です。

更新履歴(history)


2021/04/07(ver1.14)

  • システム2の『画面の幅/高さ』を初期値から変更した場合に、アニメーションの表示位置がズレる不具合修正。

2020/11/20 -> 01/21(ver1.13 -> 1.131)

  • アニメーションの位置計算時、対象の拡大率(scale)を参照するように修正。
  • それに伴い『対象の拡大率を考慮』のプラグインパラメータを追加。
    ※DynamicMotionMZも最新に更新してください。
  • フロントビューでアクターの座標を参照するアニメーションが表示されない不具合を修正。(01/21 ver1.131)

2020/11/08(ver1.12)

  • 全体ダメージ(damageAll)のテンプレートを追加。
  • テンプレート一覧の表示情報を整理。テンプレートIDが収まるように調整。
    ※各関連プラグインも最新に更新してください。

    ※テンプレートの追加・修正はプラグインを再登録しないと反映されません。
    ただし、再登録すると全ての設定変更が初期化されてしまいます。
    それを避けたい場合、テンプレート定義一覧からのコピペをオススメします。


2020/11/05(ver1.11)

  • 外部プラグインとの連携用に調整。
  • 全体ダメージ表示が作動しない不具合修正。
  • マップ版DynamicAnimationにて、アニメーションの位置が『画面』の場合もスクロールの影響を受けるように修正。
  • 中央(center)、全体(whole)のテンプレートを追加。
    ※各関連プラグインも最新に更新してください。

2020/10/31(ver1.10)

  • Motion側にあった全体ダメージ処理(damageAll)をこちらにも追加。さらに『damageAll = 10』というように数値指定すると、そのタイミングでダメージ処理を行います。

2020/10/29(ver1.09)

  • MZ v1.1.0で追加されたアニメーションの『下揃え』に対応。
  • アニメーションの頭上表示が反映されない不具合修正。

2020/10/17 -> 10/23(ver1.08 -> 1.082)

  • 戦闘中(ifBattle)、マップ中(ifMap)のテンプレートを追加。
  • マップ版にて複数の命令を組み合わせた場合、不要なウェイトが発生する不具合を修正。および処理軽量化。
  • マップ版にて戦闘時に使用すると、セーブに保存できなくなったり、次回の戦闘開始時にエラーになったりする不具合修正。(10/20 ver1.081)
  • lookCourseテンプレートでアクターを対象にした場合、アニメーションの向きが反対になる不具合修正。(noMirror処理が機能していなかったため)(10/20 ver1.082)

2020/10/15(ver1.07)


2020/10/07(ver1.06)


2020/10/05(ver1.05)

  • DynamicAnimationのマップ対応に伴い調整。
  • 外部プラグインからの変更を想定し、クラス構造を調整。
    ※NRP_DynamicMotionMZと合わせて最新版を取得してください。

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

  • DynamicAnimationのマップ対応に伴い大幅改修。
    ※NRP_DynamicAnimationMV2MZ, NRP_DynamicMotionMZと合わせて最新版を取得してください。
  • 『limitSound=0』および『limitFlash=0』で効果音やフラッシュを消去できるようにした。
  • 並列処理でのwait指定時に想定した動作をしない不具合修正。(ver1.041)

2020/09/22(ver1.03)

  • 実行条件(condition)をリピート項目に変更。
    例:『condition = b.isStateAffected(10)』で睡眠中の対象のみアニメ表示。

2020/09/15(ver1.02 -> 1.021)

  • タイムプログレス(アクティブ)でアニメ終了前にダメージが表示されてしまう不具合修正。
  • 効果音の先読が失敗していた不具合修正。
  • コマンド中のアクターにアニメ表示のプラグインとMVアニメを合わせると、ダメージ処理のタイミングが乱れる不具合修正。(09/17 ver1.021)
    ※NRP_DynamicAnimationMV2MZも同時に更新してください。

2020/09/09(ver1.01 -> 1.013)

  • MVアニメーションに対応。
  • MVアニメの軽量化プラグインを公開。(09/10)
  • 他プラグインとの競合軽減のため微調整。(09/10 ver1.011)
  • 他プラグインとの競合軽減のため微調整。(09/13 ver1.012)
  • タイムプログレス(アクティブ)で動作が途中で止まる不具合修正。(09/14 ver1.013)

2020/09/05(ver1.00 -> 1.001)

  • ツクールMZ対応版を公開!
  • 対象が複数の際、余分なウェイトがかかる不具合修正。(09/07 ver1.001)

使用方法(usage)


 スキル(アイテム)のメモ欄からテンプレートを呼び出すことでアニメーションの動作が変化します。以下は射撃(shot)型のテンプレートを呼び出した例です。
<D-Animation:shot/>

 さらにテンプレートに対して、パラメータの追加・上書が可能です。
<D-Animation:shot>
repeat = 5 // 繰返し回数
</D-Animation>

 最低限の使用法は上記の通りですが、パラメータは非常に多くあります。
 まずは以下の『基本的な使用法』のページから見ると分かりやすいでしょう。
 その後、『テンプレートの解説』や『プラグインパラメータ一覧』を参照していくのがオススメです。
 ※ほとんどは元々、MV用に作ったページのままです。多くはそのまま使えると思いますが、合わない部分などは随時MZ用に修正していく予定です。


テンプレートの解説(template)


射撃系テンプレート

 射撃(shot)、乱射(shotRandom)、全乱射(shotRandomAll)
 投射(arc)、乱投射(arcRandom)、全乱投射(arcRandomAll)

ランダム系テンプレート

 ランダム(random)、全ランダム(randomAll)
 円ランダム(randomCircle)、雨(rain)

範囲系テンプレート

 水平(horizontal)、水平射撃(shotHorizontal)、垂直(vertical)
 貫通(pierce)

円系テンプレート

 円周(circle)、渦(vortex)、発散渦(spreadVortex)、公転(revolve)
 移動渦(moveVortex)、発散移動渦(spreadMoveVortex)、ブレス(breath)
 FVブレス(fv_breath)、収束(converge)、放射(radiate)

特殊系テンプレート

 ビーム(beam)、拡散ビーム(diffusionBeam)、継続(keep)
 ブーメラン(boomerang)、魔法発動(spell)

表示系テンプレート

 進路を向く(lookCourse)、回転(roll)、画面(screen)、頭上(head)
 中央(center)、足元(foot)、全体(whole)

制御系テンプレート

 追従(follow)、自分(self)、ウェイト(wait)、ディレイ(delay)
 ダメージ(damage)、戦闘中(ifBattle)、マップ中(ifMap)

その他情報(other information)



MV版との違い(difference from MV)


 MZではアニメーションの大幅な仕様変更が行われました。それによる当プラグインへの影響をまとめます。
 主にMVからのユーザ向けです。

Effekseerの採用

 MZではEffekseerで作成した3Dエフェクトを表示するようになりました。
 そのため、全体的にアニメーションが何倍も重いです。
 大量生成系のテンプレートをそのまま使用すると、よほどPCスペックが高くない限り処理落ちします。その場合、無理に当プラグインを使うよりも、最初からEffekseer側で編集したほうがよいかもしれません。

 旧来のMV用アニメーションにも対応(詳細)しているため、そちらを使う方法もあります。
 Effekseer側に対応を頂いた結果、大幅(4〜5倍程度)に軽くなった模様です。十分実用に耐えられるようになったのでご検討ください。(2021/02/14)
 https://github.com/effekseer/EffekseerForRPGMakerMZ_Ex

終了フレームが不確定に

 Effekseerのエフェクトは終了時間が一定ではありません。それにより、プラグイン側で終了フレームを予測するのが困難となりました。
 そのため、DynamicAnimationMZでは最後に設定されたフラッシュや効果音の設定位置を、終了フレームの代わりに使用している箇所があります。
 具体的にはshot型テンプレートで対象に到達するタイミングなどです。

パラメータの3D化

 3D化により、拡大率が『scaleX』『scaleY』『scaleZ』の3通りに分割されました。
 MV版では『scaleX』で横幅、『scaleY』で縦幅が変更されましたが、挙動が変わります。
 ※Effekseerへパラメータを渡しているだけなので、作者もよく分かりません。
 単純に全体を拡大したい場合は『scale』の値を変更すれば反映されます。

 また、回転率についても『rotationX』『rotationY』『rotationZ』の3通りに別れています。
 こちらも無印の『rotation』を使えば、MVと同じ用に時計回りに回転します。ただし、MVとはやはり挙動が異なるらしく、想定通りに動かない箇所がいくつかありました。
 『ビーム(beam)』および『拡散ビーム(diffusionBeam)』のテンプレートは思ったように動きませんでした。

1フレームの単位

 アニメーションのフレームが、MZでは1/60秒単位に変更されました。これはMVの4倍速となります。

 ただし、DynamicAnimationMZの初期状態では、4/60秒単位で処理を行っています。そのため、MVの記述をそのまま持ってきてもタイミングは保たれます。
 具体的には『frame』『interval』『motionFrame』『wait』『delay』『arrival』『nextDelay』『afterimageInterval』などの値が対象です。

 もし、変更したい場合は、プラグインパラメータにある『計算レート』の値を『1』に変えてください。

無効となる項目

 『透明度(opacity)』『描画レート(rate)』『色調(color)』の項目がそれぞれ無効となります。Effekseer側で変更を受け付けないっぽいです。(たぶん……)
 これらの項目はMVアニメーション向け(実装予定)となります。

競合について


 現在『VisuStella BatttleCore』と併用すると挙動がおかしくなることを確認しています。
 しかしながら、あちらのソースが難読化されていることもあり、対応は恐らく無理ゲーです。

 モーション系はDynamicMotionを使うか、VisuStella系でプラグインを統一するかを選んだほうがよいと思われます。

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