・アクションシークエンスの基本2
前回は、ターゲットアクションを使い攻撃を3回実行するスキルを作り、
アクションシークエンスの基本がわかったかと思います。
実際にスキルを作る前に、もうひとつ基本となることを書いていきます。
前回も書きましたが、スキルのメモ欄には何も書かずともアクションシークエンスが実行されています。
ここでは、実際になにが実行されているのか?ということが重要になります。
そこで、前回の「テストスキル」のメモ欄を消してスキルを実行してみましょう。
構えて、光って、攻撃して、ダメージが出て、とそれなりに動きます。
・ 自動的に設定されているシーケンス
ここからは、私の推測になりますが、以下のコマンドが実行されているかと思われます。
----------------------------------------------------------------------------------------------------------------
<setup action>
display action … バトルログを表示します。
immortal: target, true … 途中で対象が死なないように、不死ステートを付与します。
perform start … ユーザーを一歩前に移動させ、スキルに対応したモーションを再生します。
cast animation … スキルに対応した発動合図のアニメーションを再生します。
</setup action>
<whole action> … 全体範囲を対象とした処理を行います
</whole action> 今回はスキル設定の範囲の部分で敵単体を選んでいるので、実行されませんが
敵全体を選んでいた場合、下のターゲットアクションと同様の内容が実行されます。
<target action>
perform action … スキルに対応したモーションを再生します。
action animation … スキルに設定されたアニメーションを再生します。
wait for animation … アニメーションの再生が終わるのを待ちます。
action effect … スキルに設定されたダメージ・使用効果を実行します。
wait for effect … ダメージ・使用効果の実行が終わるのを待ちます。
</target action>
<follow action> … ごめんなさい。ここに関しては私も理解していません。(;´Д`)
</follow action>
<finish action>
clear battle log … バトルログを消します。
immortal: target, false … 対象に付与した不死ステートを解除します。
perform finish … ユーザーを元いた場所に戻します。
</finish action>
----------------------------------------------------------------------------------------------------------------
思いのほか、色々なことをしていたようです。
これを知っていれば
<setup action>
</setup action>
と、メモ欄に書くことで最初の移動アクションを消すことができます。
しかし、スキル名が表示されなかったり、不死ステートはなくなると困るので、
<setup action>
display action
immortal: target, true
</setup action>
と書いて、スキル開始時の行動を正常なまま変えることができます。
・ プラグインを調整
次に、魔法モーションがループしない問題ですが、これはjsを少し書き換える必要があるようです。
私は、プログラムに関して素人なので、ある方に教えて頂きました。
jsフォルダ内にあるrpg_sprites.jsを書き換えます。
jsフォルダ内のプラグインを書き換えるので自己責任で行ってください。
私はメモ帳を使って書き換えました。
649行目あたりに
更に、モーション再生速度の部分も書き換えます。
840行目あたりに、
------------------------------------------------------------------------
Sprite_Actor.prototype.motionSpeed = function() {
return 12;
};
------------------------------------------------------------------------
という記述があるので、return 12 の部分を 8 に変更しました。
数字が低いほどスピードが早くなります。全ての動作が同様に早くなるので注意してください。
メモ帳を上書き保存して閉じたあとに、ツクールに戻って
念のため 「プロジェクトの保存」 を行ってから戦闘テストしてみましょう。
これで、問題なく戦闘が動作するようになりました!
次回は、Yanflyサイドビューアクションプラグインについて書いていこうと思います。
------------------------------------------------------------------------
Sprite_Actor.MOTIONS = {
walk: { index: 0, loop: true },
wait: { index: 1, loop: true },
chant: { index: 2, loop: true },
guard: { index: 3, loop: true },
damage: { index: 4, loop: false },
evade: { index: 5, loop: false },
thrust:{ index: 6, loop: false },
swing: { index: 7, loop: false },
missile: { index: 8, loop: false },
skill: { index: 9, loop: false },
spell: { index: 10, loop: false },
item: { index: 11, loop: false },
escape: { index: 12, loop: true },
victory: { index: 13, loop: true },
dying: { index: 14, loop: true },
abnormal: { index: 15, loop: true },
sleep: { index: 16, loop: true },
dead: { index: 17, loop: true }
};
------------------------------------------------------------------------
という記述があるので、自分の望むように書き換えましょう。
true と false を書き換えるだけです。
私は、skillとspellがループしてほしいのでskillとspellのloop: falseとなっている部分をtrueに書き換えました。