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

2021年04月09日

 このページはDynamicAnimation(MZMV)および、DynamicMotion(MZMV)プラグインの解説の一部です。

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

 合体技の実現(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』という記述により、魔道士を始点にして魔法を発射しています。

 デフォルトで作りやすかったので今回は『82:水/単体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)』を巡回しながら参照することで、それぞれの位置からアニメーションを発射しています。

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