ACTION GAME MAKERで使用しているAnimation PlayerノードはGodotのネイティブノードです。このマニュアルではその機能の一部について解説を行います。
Animation Playerの特徴
複数のトラックを制御する、いわゆるタイムライン型の再生システムで、一般的な「動画制作ツール」と同じような制作手法となります。
トラックの追加
各プロパティから直接追加する。
AnimationPlayerノードを選択し、下部パネルでAnimationPlayerが開いている状態とします。
その上で、各ノードを選択すると、各プロパティの右側にカギのマークが出現します。
このカギマークをクリックすることでトラックとキーフレームを追加できます。
タイムラインから追加する。
タイムラインでトラックを追加を選択し、追加したいトラックを選択することで追加できます。
通常使用するプロパティトラックであれば、選択ウィンドウでノードを選択してプロパティを指定します。
エディター画面上部のキー挿入ボタンを使う(ポジション、回転、スケールのみ)
基本的にはボーンアニメーション用の設定です。
選択中のノードのポジション、回転、スケールのうちトグルがオンになっているものの値を現在選択している秒数地点に挿入します。
録画(rec)ボタンが有効の場合、これらの値を調整すると自動でアニメーショントラックに反映します。
RESETトラックについて
トラックの追加時、RESETトラックを追加するか?というオプション選択が表示されます。
結論から言えば、特に追加をする必要はありません。
RESETトラックは各トラックの状態をリセットするために使うものですが、ACTION GAME MAKERのヴィジュアルスクリプトでのアニメーション再生では特に使用しておりません。
しかし、各オブジェクトの「初期状態」としてはこのRESETトラックの状態が表示されます。
エディター上である項目を無効にしても、RESETトラックで有効にしていれば有効な状態でゲーム上では再生されてしまいますので、追加しないほうが無難です。
コリジョンの変形
各コリジョンのサイズのプロパティついては、サイズの形を決定するRectangleShape2D/CapsuleShape2D等を展開した内部にありますので展開して選択する必要があります。
プロパティの活用例
AnimationPlayerには、原則的にどのようなプロパティでも入れ込むことができますので活用例を紹介します。
-
攻撃判定/当たり判定/壁判定のオン/オフの切り替え。
各CollisionのDisabledプロパティのオン/オフを切り替えることで切り替えることができます。 -
画像の切り替え
Sprite2D等のVisibleプロパティのオン/オフを切り替えることで武器の変更、スキルの付替えなど、画像を切り替える動作を行うことができます。 -
各セッティングノードの調整
ACTION GAME MAKER用のノードの各プロパティもキーフレームとして挿入できますので、MoveAndJumpSettignsのプロパティを入れて独自の加速方法を作ったり、BaseSettingsでアニメーションに合わせて攻撃力を変えたりといったことをすることができます。 -
パーティクルの再生
ParticlesノードのEmittingプロパティを切り替えることで、アニメーション中にパーティクルを再生することができます。 -
音の再生
AudioStreamPlayer等の音を再生するノードのプロパティを入れ込むことで音の再生/停止等の動作を行うことができます。 -
シェーダーの効果量を変える
シェーダーのプロパティ値を入れ込むことで、だんだん歪んでいくといったアニメーションをさせることができます。
イージング
通常、アニメーション中で数値を変更するように設定した場合。等間隔で数値は変更されます。
例えば、0秒地点の値が0で、1秒地点の値が1となるようなものの場合、0.5秒地点の値は0.5です。
しかし、イージングを使えばこの傾き方を変更することができます。
以下の画像のような例であれば、0.5秒地点の値は0.1未満の値になります。
イージングは各キーごとに設定でき、次のまでのイージングを設定する形になります。
先ほどの例であれば0秒のキーでイージングを設定する必要があります。
ベジェ曲線
キーフレーム挿入時ベジェ曲線トラック化することができます。
イージングでは、2つの異なる値の間のみで変化をつけることができますが、ベジェ曲線トラックでは自由に曲線を描くことができます。
下部のラインアイコンをクリックで曲線エディターを起動できます。
曲線エディターではいわゆるハンドルの操作で自由に曲線をつくることができます。
注意すべき処理のタイミング
AnimationPlayerでは、再生終了後、次のフレームから次のアニメーションを再生します。
そのため、60FPSで1秒のアニメーションを作ると、1秒時点では59フレーム目の途中となり、次のアニメーションは1.002秒から始まります。わずかに0.002秒だけですがアニメーションの空白期間が生まれることになります。
通常は視認できない秒数ですので問題にはなりませんが、
アニメーション1の途中で攻撃判定を有効化し、
アニメーション2の最初で攻撃判定を無効化する。
といったアニメーションを作成した際、無敵時間がない、あるいはシビアなタイミングとなっていると0.002秒の差によって連続HIT等が生まれる可能性があるのでご注意ください。