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

2020年03月28日

 このページは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のランダム値を生成する関数です。

針千本(2020/4/9)


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


// 連射(モーション)
<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倍から等倍へと変化していくような数式になっています。

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