赤兎ラボ

コーディングからバージョン管理、業務効率化までをまとめます。

Unity AnimationEvent

AnimationEventとは

Unityではモーション中に関数呼び出しを行う機能が備わっています。
これをAnimationEventと言います。 AnimationEventを使って、攻撃モーション中のみ当たり判定を出現したりすることが出来ます。

実装方法1(Unity上でアニメーションを作った場合)

f:id:RedRabbitNet:20200107202626p:plain
AnimationWindowを開いてアニメーション名が書いてある右辺りにプラスマークのついたアイコンを押します。画像ではAddEventと記されている部分です。
すると右側のタイムライン上にマークが付きます。画像では0:05付近にあります。
これをクリックするとInspectorビューにアニメーションイベント設定用の項目が表示されます。Functionに関数名を記述して設定は終わりです。

実装方法2(Importしたモデル・アニメーションを使う場合)

f:id:RedRabbitNet:20200107203228p:plain
Blender等で作成したFBXモデルをインポートして使う場合(AssetStoreで持ってきたものも同様)、ImportSettingsの下の方にAnimationEvent設定用の欄があります。開閉式になっているので見つけづらいかもしれません。
ここで実装方法1と同じように呼び出す関数を設定して完了です。

スクリプトに関する注意

上記でAnimation側から呼び出す仕組みは整っています。
後はスクリプト側に呼び出す関数を実装するだけですが気を付けてほしいことがあります。

1. 関数はpublicで実装すること
AnimationEventという該当コンポーネント外からの呼び出しを行うわけですからpublicにしておくべきでしょう。
2. スクリプトはAnimation再生のルートと同じオブジェクトにアタッチすること
Animatorを使っている場合、Animatorがアタッチするのと同じオブジェクトにつけましょう。親子階層を考慮して呼び出しはしてくれません。

以上で実装できます。AnimationEventを使うことで再生タイミングをスクリプトから取得したりと面倒なことをする必要がなくなるので是非活用してください。