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

2020年03月28日

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

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

 基本的にはMV用アニメを使っています。MVを持ってない人はごめんなさい。
 MZでの利用は、DynamicAnimationMZからMVアニメを呼び出すプラグインを参照してください。

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

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

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

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

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

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


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

目次




 まずは普通に矢を放ちます。
 通常攻撃として使いたい場合は、公式プラグインの『WeaponSkill.js』で武器に紐付ければ可能です。
 ※ツクールMZでは武器の特徴に『攻撃スキル』を設定すればOK。
 武器を持たない敵キャラは普通にスキルとして使えばOKです。ちなみにこのプラグインでスキル名を非表示にもできます。


<D-Setting:MV>

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

 『lookCourse』は矢に進路を向かせるためのテンプレートです。
 始点位置や到達フレームは各自の設定に合わせて変更してください。適当にヒットエフェクトもつけていますが、その辺はお好みでどうぞ。

連射


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


<D-Setting:MV>

// 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-Setting:MV>

// 弓を引く
<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-Setting:MV>

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

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

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

針千本(2020/4/9)


 敵の周囲から出現する大量の矢が突き刺さります。


<D-Setting:MV>

// 連射(モーション)
<D-Motion:attack>
repeat = 15
interval = 1
motionFrame = 1/3 // interval÷3
</D-Motion>

// 矢(収束アニメ)
<D-Animation:converge&lookCourse>
repeat = 60
interval = 1/4
exRandom = 20
syRandom = 20
arrival = 4 // 到達フレーム
scaleX = 1 + (1 - Math.min(t, arrival) / arrival) * 2
scaleY = 1 + (1 - Math.min(t, arrival) / arrival) * 2

</D-Animation>

 赤字部分で矢の縮小処理を行っています。通常の3倍から等倍へと変化していくような数式になっています。

ジャンプショット(2020/11/18)


 ジャンプして矢を放ちます。


<D-Setting:NoStep&MV>

// 空中へ移動
<D-Motion:jump>
frame = 8
airY = -200 // 高さ200へ移動
ex = a.x - 120
wait = 10
</D-Motion>

// 弓を引く
<D-Motion:attack/>

// ショット
<D-Animation:shot&lookCourse&wait>
sx -= 10 * mirroring
sy += 10
arrival = 4
</D-Animation>

<D-Motion:return/>

 『airY = -200』によって空中へ移動します。『return』によって、自動的に地面へ降ります。
 これだけだと地味なので、後は好きなようにアレンジしてください。例えば、以下は『連射』と組み合わせた例です。「弓を引く」〜「ショット」の部分を入れ替えるだけなので簡単です。



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

DynamicMotion その他機能など【RPGツクールMZ&MVプラグイン】

2020年03月22日

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

 補足的な機能解説です。いくつかの機能はDynamicAnimationと同一です。
 こちらもご参照ください。
 >DynamicAnimation その他機能など

目次


ミラーリング(mirroring)

直接演算

&連結

D-Setting機能

自動前進無効(NoStep)

並列実行(Sync)

不死身制御(Immortal) ver1.04


ミラーリング(mirroring)


 例えば、以下のような定義があるとします。
<D-Motion:near>
ex = b.x + 200 // 終点X座標
</D-Motion>

 対象の右200ピクセルへ移動するというものです。
 ところが一つ問題があります。

 アクターが使用した場合は問題なく対象の正面である右側へ移動します。……が、これを敵が使うと今度はアクターの背中へと移動してしまいます。
 となると、味方なら『b.x + 200』、敵なら『b.x - 200』に定義を切り替えたい。
 そこで、以下の機能を用意しました。
<D-Motion:near>
ex = b.x + 200 * mirroring // 終点X座標
</D-Motion>

 この『mirroring』という変数は対象がアクターの場合に値が-1になります。これをかけることで必要な部分だけを左右反転させられます。
 また、フロントビューなどで上下座標を反転させたいなら、Y座標側に同様の操作をしてください。


 この通り、対象の左へと移動するようになりました。

 ミラーリングについては、DynamicAnimation側の解説もご確認ください。

直接演算


 以下のように指定すれば、テンプレートの設定値に対して直接演算できます。元の値が分からなくとも設定できるので便利です。
<D-Motion:near&jump&roll>
ex += 100 // テンプレートの設定値 + 100
ey -= 100 // テンプレートの設定値 - 100
rotation *= 2 // テンプレートの設定値 * 2
arcY /= 2 // テンプレートの設定値 / 2
</D-Motion>

 なお、これらの演算はJavaScriptの式に対して、『文字列連結』しているだけであることにご注意ください。

 どういうことかというと、テンプレートの設定値が「ex = b.x + 100」だったとします。
 メモ欄の入力が以下の通りだった場合……
<D-Motion:jump>
ex *= 2
</D-Motion>

 連結後の内容は「ex = b.x + 100 * 2」となります。
 つまり、かけ算がかかるのは末尾の100の部分だけってことです。
 全体にかけるにはプラグインの設定値を「ex = (b.x + 100)」のようにしておけばOKです。
 足し算、引き算なら支障ありませんが、かけ算、わり算の場合はご注意を。

&融合


 &記号によりテンプレートの融合が可能です。
 例えば……
<D-Motion:near&jump/>

 と、接近(near)型とジャンプ(jump)型のテンプレートを『&』でつなげることで定義を融合します。ジャンプしながら対象へ向かって接近します。

 実際には、プラグインに登録されたテンプレート定義の値を融合しています。
 注意点として、パラメータが競合する場合は後ろの定義が優先されます。

 どういうことかというと、まずnear型の定義は以下のようになっています。
<D-Motion>
wait = (isSync ? 0 : "autoMove")
ex = defaultX + a.width/2 * mirroring + (position != 3 ? b.width/2 : 150) * mirroring
ey = defaultY + a.height/2
airY = 0
motion = walk // 歩行モーション
</D-Motion>

 対するjump型の定義は以下のようになっています。
<D-Motion>
arcY = -100
motion = wait
</D-Motion>

 両者を融合した結果は以下のようになります。
<D-Motion>
wait = (isSync ? 0 : "autoMove")
ex = defaultX + a.width/2 * mirroring + (position != 3 ? b.width/2 : 150) * mirroring
ey = defaultY + a.height/2
airY = 0
arcY = -100
motion = wait // 待機モーション
</D-Motion>

 near型にあった『motion = walk』の定義が『motion = wait 』で上書きされました。同時に二つのモーションを取れないので当たり前ではありますが、ご注意ください。

 なお、融合できる数に制限はなく、3つ以上も可能です。

D-Setting機能


 メモ欄に記入することで以下の機能を実行できます。
 なお、複数の機能を設定する場合は以下のように記載してください。
<D-Setting:NoStep&Sync>

自動前進無効(NoStep)

 スキル(アイテム)実行時の一歩前進をなくします。
<D-Setting:NoStep>


並列実行(Sync)

 テンプレートに初期設定されたウェイトおよびディレイ命令を無効化します。
 合体技など複雑なタイミング調整を行いたい場合に使用する想定です。
<D-Setting:Sync>

 もっとも、必ずしも無理に使う必要はありません。『noWait』『noDelay』などのテンプレートを活用すれば、これを使わずとも合体技の作成は可能です。使いやすい方でどうぞ。

不死身制御(Immortal) ver1.04

 不死身ステートを使用することで、演出制御を行います。使用するステートはあらかじめプラグインパラメータへ設定してください。
<D-Setting:Immortal>

 これにより、スキルの演出が終わるまで死亡判定がされなくなります。連続ヒット技の最中に相手が死亡して、演出が空振りになることを防げます。

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

DynamicMotion テンプレート定義一覧【RPGツクールMVプラグイン】

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

 ここではテンプレートの定義情報をまとめています。
 使用方法ではなく、あくまで資料的な位置づけです。

 初期状態のテンプレート定義一覧は以下からダウンロードできます。単なるテキスト形式です。

 テンプレート定義一覧テキスト
 マップ用テンプレート定義一覧テキスト

更新履歴


2020/11/08(ver1.15)

  • テンプレート一覧の表示情報を整理。テンプレートIDが収まるように調整。
  • 各モーション用のテンプレートを追加し、全てのモーションを呼び出されるようにした。『svGuard』というように頭にsvをつけて指定します。
  • 『reverse』『pattern0』『pattern1』『pattern2』のテンプレートを追加。モーションを逆再生したり、特定のパターンで固定したりできます。
  • 『ifAdjacent(隣接)』『ifDistant(遠隔)』のテンプレートを追加。マップ上でイベント同士が「隣接している時」「していない時」のみ実行する処理を作成できます。
  • マップ版『near』『crash』『back』の定義を拡張性を考慮して調整。
  • マップ版『return』で移動がない場合はジャンプしないように調整。
  • マップ版『clear』のテンプレートを追加。用途は後日説明予定。

2020/11/05(ver1.14)

  • 中央(center)、全体(whole)のテンプレートを追加。
  • マップ用に衝突(crash)のテンプレートを追加。
    ※外部プラグインとの連携用の変更であるため、動作に大差はありません。

2020/10/17(ver1.13)

  • マップ用テンプレート定義一覧を追加。
  • 戦闘中(ifBattle)、マップ中(ifMap)のテンプレートを追加。

2020/10/04(ver1.09)

  • 背後(back)、頭上(head)、足元(foot)の各テンプレートを追加。

2020/05/18(ver1.06)

  • 参照先バトラー(a, b)の変更機能追加に伴い『貫通(pierce)』『前進(stepForward)』『後退(stepBack)』『味方のみ(ifActor)』『敵のみ(ifEnemy)』型のテンプレートを修正。
    ※互換性があるため、反映しなくとも動作上の差は出ません。

2020/05/06(ver1.04)

  • 貫通(pierce)型の定義について横幅を参照するよう修正。
  • 公転(revolve)型テンプレートを追加。

2020/04/10(ver1.03)

  • 振動(shake)のテンプレートを追加。

2020/03/29(ver1.02)

  • 即時(soon)、自分ズーム(zoomA)、対象ズーム(zoomB)、ズーム解除(zoomOff)の各テンプレートを追加。

2020/03/22(ver1.002)

  • 公開!

このページの目的


 バージョンアップなどで新しいテンプレートが追加された際は、プラグインを一度削除しないと設定が反映されません。ですが、既にユーザ独自で定義を追加・変更しているとそうもいかなくなります。
 そんなわけでここに定義を掲載し、ユーザがテンプレートを取り込めるようにしました。
「色々改造しているうちに元の設定が分からなくなっちゃったよ!」という場合にも役立つかもしれません。

貼付方法


 なお、定義は以下の手順でプラグインパラメータへ貼り付けられます。

  • プラグインの『テンプレート一覧』を開き、末尾の空欄を選択する。
    ※別に末尾でなくてもいいですが、最初はそのほうが安全です。
  • テキストタブを開く。
  • 上記の『テンプレート定義一覧』から定義をコピペする。{〜}が一つの定義です。
  • OKを押して一覧に反映されていれば成功です。

20200215_add_tenplate.JPG

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