公開日:2023/09/27  更新日:2023/09/27

Unityの死亡アニメーションの実装

 今回はUnityの3Dゲーム制作でキャラの死亡アニメーションの実装方法を紹介していく。
 方法は色々あるが今回はAnimatorControllerのAny Stateを使ってやっていく。意外とつまづきやすいので、ぜひ確認してみてほしい。

Unityの死亡アニメーションの実装

死亡アニメーション素材を手に入れる
Any Stateの使い方
死亡時処理作成
目次にもどる

死亡アニメーション素材を手に入れる

 まずは3Dモデルが倒れる・・といったような死亡アニメーションを用意する必要がある。
 今回、利用したのは以下の無料アセット(2023年9月現在無料。倒れるアニメーションが主ではないが、内容が非常に優秀なのでぜひ手に入れておこう)。


 ExplosiveLLC→RPG Character Mecanim Animation Pack FREE→Animations→2Hand-SwordのフォルダにRPG-Character@2Hand-Sword-Knockdown1というFBXファイルがあるので、これを使っていく。
目次にもどる

Any Stateの使い方

 AnimatorControllerを使って、死亡アニメーションを実装する。
 ステートや遷移などアニメーションの基本的がわからない場合は以下の記事を先に確認してほしい。
アニメーションの基本
アニメーションで剣を振る

 キャラが自由に行動できるようにしていくと、以下のようにステートも多くなっていく。

 死亡処理を作るなら、移動・攻撃・ダッシュ・ジャンプなど、現在どのステートにいたとしても死亡ステートに遷移させてやる必要がある。
 全てのステートから死亡ステートまでの遷移を作るのはあまりに非効率だ。ここで重宝するのが、Any State
である。

 これはAnimatorControllerに最初から作られているステートであり、何もしなければ作動しない。
 Any Stateから他のステートに進む遷移を設定すると、どのステートからも遷移するようになる。
 例えば以下のように「Any state」→「Death」のように遷移を作り、遷移の条件はintパラメーターのDeathが1と同値の時に設定した。

 すると現在のステートがidleだろうがAttackだろうが、intパラメーターのDeathが1になれば「Death」への遷移が開始される。
 最大の注意点は遷移のインスペクター欄でCan Transition To Selfのチェックを外しておくこと(デフォルトでチェックがついている)。

 Can Transition To Selfにチェックを入れてしまうと遷移先のステートから同じステートに遷移が可能となる。つまり「Death」→「Death」に遷移し続けて、短い時間でのループ再生が行われ、バグったようなアニメーションとなってしまう。
 よって、「Any state」からの遷移を作る場合、Can Transition To Selfのチェックは忘れずに外そう(特につまづきやすいので覚えておきたい)。
 加えて、攻撃や移動などアニメーションの終了を待たずに死亡アニメーションをはじめたいので、Has Exit Timeのチェックも外しておこう。
目次にもどる

死亡時処理作成

 続いて先述したRPG-Character@2Hand-Sword-Knockdown1というFBXファイルの中にある2Hand-Sword-Knockdown1というAnimationClipを、「Death」ステートのインスペクター欄のMotionの項目にドラッグ&ドロップする。これで「Death」ステートに遷移した際に死亡アニメーションが再生されるようになった。
 続いて、RPG-Character@2Hand-Sword-Knockdown1のFBXファイルを選択しインスペクター欄を確認してほしい。
 Eventsの項目で以下のように3Dモデルが倒れた少したったタイミングでイベント「DeathEnd」を作成。

 後は死亡する3Dモデルにアタッチされているスクリプトに「DeathEnd」の処理を記述すればいい。
 自分はこれまでの記事でCharaDamageというスクリプトをダメージを受ける3Dモデルにアタッチすることでダメージ処理を行ってきた。よってDeathEndの処理もCharaDamageのスクリプト内に作った。記述は以下の通り(死亡関連の内容のみ記載)。
 Death()のメソッドはHPが0以下になり死んだ時に呼ばれるメソッドである。ここでAnimatorControllerのDeathのパラメーターを1にして死亡演出を発生させる。
 死亡アニメーションが進み3Dモデルが倒れて少したったタイミングでイベントによりDeathEndのメソッドが呼ばれる。ここで、3Dモデルのゲームオブジェクトを非アクティブにして消失させる。

 以上の作業を行うことで以下のように死亡アニメーションを実装できる。

 敵が倒れているのが確認できる。ここでは敵しか倒していないが、もちろんプレイヤーを倒すのに使うこともできる。

Unityのゲーム制作まとめへ戻る

page top