DynamicMotion(戦闘モーションを自在に制御)【RPGツクールMVプラグイン】

2020年03月28日

 スキル実行時の戦闘モーションを自在に制御するプラグインです。
 自由なタイミングでバトラーを移動したりモーションを実行したりできます。
 さらにDynamicAnimationとの連動によって、アニメーションを自在に挿入できます。

 YEP_BattleEngineCoreなど、既存のモーションプラグインより敷居が低いものを目指しました。完全に機能が同等とはいきませんが、それなりに充実させています。

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

目次


導入方法

更新履歴

使用方法


テンプレートの解説


その他情報


サンプル技


今後の課題


導入方法


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

 NRP_DynamicMotion.js ver1.021(2020/03/29)
 NRP_DynamicAnimation.js

 ※アニメーション用プラグイン(NRP_DynamicAnimation.js)については、解説ページをご覧ください。

更新履歴


2020/03/29(ver1.02 -> 1.021)

  • 即時(soon)型のテンプレートを追加。(詳細
  • ズーム系のテンプレート(3種類)を追加。(詳細
  • 単独でズーム処理を行うと有効にならない不具合修正。(ver1.021)
  • 効果音(playSe)武器タイプ(weaponType)のパラメータを追加。

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


2020/03/23(ver1.01)

  • コモンイベントの実行機能追加。(詳細
  • スクリプトの実行機能追加。
    サンプル技Aにスクリプトによるズーム処理を追加しました。
  • 実行時間が0だとジャンプしない不具合修正。

2020/03/21(ver1.00 -> 1.002)

  • 公開!
  • パーティが3人以下だとエラーになる不具合修正。(ver1.001)
  • 途中のセーブデータで実行するとエラーになる不具合修正。(ver1.002)

使用方法


 スキル(アイテム)のメモ欄からテンプレートを呼び出すことでバトラーが動作します。以下は接近(near)型のテンプレートを呼び出した例です。
<D-Motion:near/>

 さらにテンプレートに対して、パラメータの追加・上書が可能です。
<D-Motion:near>
frame = 8 // 移動時間
</D-Motion>

 最低限の使用法は上記の通りですが、パラメータは非常に多くあります。
 まずは以下の『基本的な使用法』のページから見ると分かりやすいでしょう。
 その後、『テンプレートの解説』や『プラグインパラメータ一覧』を参照していくのがスムーズです。

 面倒なら『サンプル技』のページがオススメです。ほぼコピペでスキルが作れるので手っ取り早いです。


テンプレートの解説



その他情報



サンプル技



今後の課題


  • 機能の充実。
  • サンプル技の追加。

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

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

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

 弓系のサンプル技を紹介していきます。

 前提として、DynamicAnimationの基本的な使用法を把握している想定です。そうでない場合は、リンク先の上のほう(到達フレーム(arrival)辺り)だけでも見ていただけると分かりやすいかと思います。

 ※当ページのサンプルは『DynamicAnimation ver1.04以降』推奨です。さらにプラグインパラメータに『lookCourse』型テンプレートが追加されている必要があります。(参考:テンプレート定義一覧

 矢はツクールMVの標準素材にはありませんが、弓の攻撃パターンに含まれています。アニメーションとして使えるように抜き出してみました。ついでに弓から矢を取り除きました。
 ※ツクールシリーズの規約によりMVの正規ユーザ以外は使用できません。

アニメーション(img/animations)
※刺さるパターンつき

武器(img/system)
※右上の弓以外はそのまま

 これで矢のアニメーションを作成すれば準備完了です。
 作成といっても動きはプラグインで制御するため、単に画面中央にパターンを貼りつけるだけでOKです。
 サイズは初期状態だと小さすぎるので、150%ぐらいに拡大したほうがいいかもしれません。


 例では1〜4フレームは1パターン目、5〜8フレーム目は2パターン目(刺さったほう)となるようにしてみました。

目次




 まずは普通に矢を放ちます。
 通常攻撃として使いたい場合は、公式プラグインの『WeaponSkill.js』で武器に紐付ければ可能です。武器を持たない敵キャラはどうするのかという問題はありますが……。


<D-Motion:attack/>
<D-Animation:shot&lookCourse>
sx -= 10 * mirroring // 始点X座標
sy += 10 // 始点Y座標
arrival = 4 // 到達フレーム
</D-Animation>

 始点位置や到達フレームは各自の設定に合わせて変更してください。適当にヒットエフェクトもつけていますが、その辺はお好みでどうぞ。

連射


 連射です。ひたすら矢を放ちます。


// 10連射(モーション)
<D-Motion:attack>
repeat = 10 // 繰返回数
interval = 1 // 間隔

motionFrame = 1/3 // interval/3
</D-Motion>

// 矢
<D-Animation:shotRandom&lookCourse>
repeat = 10 // 繰返回数
interval = 1 // 間隔

sx -= 10 * mirroring // 始点X座標
sy += 10 // 始点Y座標
arrival = 4 // 到達フレーム
</D-Animation>

 ただ『矢』を繰り返しているだけですね。
 『repeat』の値を変更すれば、矢の本数も変わります。その際、モーションとアニメーションの『repeat』と『interval』の値を一致させるようにしてください。

アローレイン


 矢を上空に放ち、雨のように落下する矢で攻撃します。
 矢は12フレームで対象へ刺さる設定にしています。滞空時間があるため、長めにしたほうが自然となります。


// 弓を引く
<D-Motion:attack>
repeat = 40
interval = 1/2
motionFrame = 1/2/3 // interval/3
</D-Motion>

// 矢連射
<D-Animation:arcRandomAll&lookCourse&wait>
repeat = 40
interval = 1/2
sx -= 10 * mirroring // 弓に位置を合わせる
sy += 10 // 弓に位置を合わせる
eyRandom = 130 // 終点Y座標ランダム幅
arrival = 12 // 到達フレーム
arcY = -500 // 放物線の高さ
</D-Animation>

 『eyRandom = 130』は標準よりも終点Y座標のランダム幅を狭めるためです。標準値だと背景上方の空間に刺さってちょっと変な感じでしたので。

ウインドダート


 風の矢を連射します。
 軌道は高さランダムの放物線を取ります。
 さらに魔力(mat)が20増加するごとに矢の本数が増えます。


 ちなみに風の矢は以下のように作成しています。(クリックで拡大)
 8フレームで対象へ到達する想定です。
 風の矢以外でも、炎の玉でも何でも構いません。


// 弓を引く
<D-Motion:attack>
repeat = 10 + Math.floor(a._battler.mat / 20)
interval = 2
motionFrame = 2/3 // interval/3
</D-Motion>

// 風の矢連射
<D-Animation:shotRandom&lookCourse&wait>
repeat = 10 + Math.floor(a._battler.mat / 20)
interval = 2
sx -= 20 * mirroring // 弓に位置を合わせる
sy += 10 // 弓に位置を合わせる
exRandom = 50
eyRandom = 50
arrival = 8 // 到達フレーム
arcY = -150 + Math.random() * 300 // -150〜150
</D-Animation>

  • 『lookCourse』テンプレートによって、矢は常に進路を向きます。
  • 『Math.floor(a._battler.mat / 20)』は魔力を20で割って、切捨します。
  • 『Math.random()』は0〜1のランダム値を生成する関数です。
    これによって、放物線の高さをランダム化しています。
  • 『Math.random()』は0〜1のランダム値を生成する関数です。

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

DynamicAnimation&Motion サンプル技A【RPGツクールMVプラグイン】

2020年03月23日

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

 サンプル技を紹介していきます。少し複雑なものをいきます。
 コピペしてスキル(アイテム)のメモ欄に貼り付けできます。そのまま使うも改造するも自由です。

目次



爆裂脚


 ライダーキック的な挙動で敵に衝突します。


 アニメーションには『id=107(無属性/単体2)』を使っていますが、そこはお好みでどうぞ。
// 自動前進しない
<D-Setting:NoStep>

// 回転しながら浮上
<D-Motion:jump&roll&wait>
frame = 8
rotation *= 4
airY = -200 // 空中Y座標
ex = sx - 50 * mirroring
</D-Motion>

// 体を傾けて衝突
<D-Motion:crash>
frame = 3
rotation = (Math.PI * 2) / 6 // 360/6度
</D-Motion>

// 角度を戻す&しゃがむ
<D-Motion>
rotation = 0
motion = abnormal // 瀕死ポーズ
frame = 10
</D-Motion>

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

// 対象が吹っ飛ぶ
<D-Motion:jump&target>
ex = sx - 500 * mirroring
wait = 10
</D-Motion>

// 対象元の位置へ
<D-Motion:jump&home&target/>

// 戻る
<D-Motion:return/>


ズームアタック DynamicMotion ver1.02(2020/03/29)


 攻撃しながら徐々に対象へ向かってズーム処理をかけます。
 ※ズーム処理のテンプレート化に伴い記述を簡略化しました。(2020/03/29)


<D-Motion:near&zoomB/> // 対象にズーム
<D-Motion:attack/> // 武器振り
<D-Animation/> // アニメーション
<D-Motion:return&zoomOff/> // ズーム解除

 行動主体にズームしたい場合『zoomA』を使用してください。
 なお、これらの処理はズーム対象が移動していても自動で追尾します。

スライディング(2020/03/24)


 スライディングで敵をスピンさせます。


 スキルに設定するアニメーションの位置は『足元』にしてください。
 また砂煙用のアニメーションが別途必要です。下の例では『Earth1』のパターンを使っています。位置は『足元』。合成方法は『通常』に設定すると自然です。


// 90度回転して体を地面へ
<D-Motion:wait>
duration = 1
airY = a.height/3
rotation = (Math.PI * 2) / 4
</D-Motion>

// 砂煙のアニメーション
<D-Animation:self>
id = XXX // ←ここに砂煙用のIDを指定
repeat = 5
</D-Animation>

// 対象の左へ
<D-Motion:pierce>
frame = 5
wait = 4
ex = defaultX - 100 * mirroring
</D-Motion>

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

// 敵がスピン
<D-Motion:target&roll&jump>
frame = 5
rotation *= 3
arcY = -100
</D-Motion>

// 角度と位置を戻す
<D-Motion:wait>
delay = 1
duration = 1
airY = 0
rotation = 0
</D-Motion>

// しゃがんで待つ
<D-Motion:wait>
motion = abnormal // 瀕死ポーズ
frame = 5
</D-Motion>

<D-Motion:return/> // 戻る


ウルトラジャンプ(2020/03/25)


 ランダムで敵を踏みつけます。
 例では範囲を『敵4体ランダム』にしていますが、『敵全体』などにしても問題なく機能します。


 スキルに設定するアニメーションを『頭上』に設定することで頭を狙います。
 例では『2:打撃/エフェクト』を頭上に変更したものを使用しています。
<D-Setting:NoStep> // 自動前進禁止

// 対象ごとにジャンプ攻撃
<D-Motion:crash&jump&every>
ey += b.height/8 // 少し下を狙う
arcY = -200
motion = victory // 勝利ポーズ
frame = 7 // 移動(滞空)時間
wait = 7 // 最初の滞空を待つ
nextDelay = 7 // 7フレーム間隔

</D-Motion>

// 個別ダメージ表示(任意)
<D-Motion:every>
delay = 5 // アニメーションを待つ
nextDelay = 7 // 間隔を合わせる
damage = true
</D-Motion>


// 着地に合わせてアニメーション表示
<D-Animation>
nextDelay = 7 // 間隔をモーションに合わせる
wait = auto
</D-Animation>

// 最後のアニメーション開始と同時に戻る
<D-Motion:return>
delay = -6 // アニメーションのフレーム数を引く
arcY = -200
</D-Motion>

 青字部分は一撃ごとにダメージ表示する設定です。不要なら削除してください。

 これを応用すれば、順番に体当りしていく技なども作成できます。
 タイミング調整が少し難しいので注意です。赤字部分に気をつけてください。

払い抜け(2020/03/31)


 対象の向こう側まで移動しながら、斬撃を放ちます。
 対象との角度によって斬撃の角度も変化します。


 以下のように左向きの斬撃を作ります。
 「6:斬撃/物理」を一括設定で45度回転させるなどすれば可能です。


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

// 対象の向こうまで移動
// X座標だけ指定すれば、Y座標も自動計算
<D-Motion:pierce&attack>
frame = 5
ex = defaultX - 150 * mirroring // 対象の左150pxまで移動
</D-Motion>

// 対象との位置関係でアニメーション角度変更
<D-Animation>
delay = 3
wait = auto
rotation = da.startRotation(Math.atan2(a.y - a.height/2 - defaultY, a.x - defaultX))
</D-Animation>

<D-Motion:return/> // 戻る

 赤字部分で、色々と細かい細工をしています。

  • da.startRotation()は開始時点の角度を保持する作者の独自関数です。
  • Math.atan2()は行動主体(a)と対象(defaultX, Y)の角度を求めます。
    こちらはJavaScriptの標準機能です。

 ※若干、意味不明かもしれませんが、コピペで大丈夫なのであまり気にしないでください。

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