3rd Mission Start!!
アニメーション
モデルのインポートが終わったので、次はアニメーションを設定していきます。
とりあえず初めに設定するのは、以下のアニメーションです。
- 何もしない
- 移動(手ぶら)
- 移動(剣装備)
- 攻撃(3段階)
- 防御
- 軽ダメージ
- 重ダメージ
- 死亡
他にも増やすことになるかもしれませんが、まずはこの10アニメーションを設定します。
各アニメーションは既にインポート済みなので、あとは実際にPlayerにアニメーションを設定していく作業になります。
最初にAnimatorの完成形がこちらです。
Base Layer
各Animationの設定
Loop Time、Root Transeform Rotationなどを設定していきます。
Loop TimeをONにするアニメーション
- 何もしない
- 移動(手ぶら)
- 移動(剣装備)
- 防御
Transeform Rotation > Bake Into Pose をONにするアニメーション
- 何もしない
- 移動(手ぶら)
- 移動(剣装備)
- 攻撃(1段階目)
- 攻撃(2段階目)
- 防御
Transeform Rotation > Offset を調整するアニメーション
- 移動(剣装備)
- 攻撃(1段階目)
- 攻撃(2段階目)
- 防御
- 死亡
Animator Controller設定
Animator Controllerの作成
Create > Animator Controller で、Player用のAnimator Controllerを作成します。
ファイル名はPlayerAnimationにしました(良い命名募集中です)。
PlayerのInspectorを開き、ControllerにPlayerAnimationを設定。
各Animationを追加
まずデフォルトで設定されているBase Layerに以下のアニメーションをドラッグ&ドロップします。
- 何もしない
- 移動(手ぶら)
- 移動(剣装備)
- 防御
続いてBase Layerで右クリック後、Create Sub-State Machineを選択し、名前をAttacksに変更。
Attacksをダブルクリックすると、サブステートマシンの中に入れるので、そこに以下のアニメーションをドラッグ&ドロップします。
- 攻撃(1段階目)
- 攻撃(2段階目)
- 攻撃(3段階目)
Base Leyerに戻った後、同じ要領でDamagesのサブステートマシンを作成し、中に以下のアニメーションを追加。
- 軽ダメージ
- 重ダメージ
- 死亡
※死亡に関してはDamagesに入れるべきか悩みましたが、ダメージを受けた時のアニメーションの一種ということでDamagesに入れております。
この辺り、有識者の方には是非Base Layerに入れるのがいいのか、それとも他のやり方がいいのかなど教えていただきたいです。
Parametersを追加
各アニメーションの遷移条件(Conditions)に利用するためのパラメータを作成します。
剣と盾は初期装備ではないので、それぞれ所持非所持のパラメータを用意していますが、Script内のメンバ変数で管理するだけで十分な気もしているので、あとで削除する可能性もあります。
- Attack(Trigger)
- Blocking(Bool)
- Damage(Int)
- Death(Trigger)(ゲームの仕様上、Boolに変更するかも?)
- MoveSpeed(Float)(IntでもOK)
- HasSword(Bool)
- HasShield(Bool)
DeathじゃなくてDieの方が命名として相応しそうですね。。。
Transition
知識メモ
Has Exit Time
ONにすると、設定したところまでアニメーションを再生したあと、次のアニメーションに遷移します。
OFFにすると、条件を満たせばすぐに次のアニメーションに遷移します。
Transition Duration
Has Exit TimeがONの時のみ機能。
次のアニメーションに遷移するための受付時間的なものです。
この受付時間中に条件が満たされると次のアニメーションに遷移します。
Conditions
アニメーションの遷移条件。
先ほど作成したパラメータが利用できます。
各Transition詳細
個別に記載していくとかなり大変なので、設定画面のスクショを貼り付けていきます。
構想中のゲーム的に起こり得ないアニメーションの遷移は実装しておりません。
-
『Entry 攻撃サブステートマシン』から『攻撃(1段階目)』
「Set as Layer Default State」によって設定しているので条件等なし。
『攻撃(3段階目)』の終了手前、どこを向いているんだという感じだったので、このあとアニメーションをトリミングして綺麗に元の姿勢に戻るよう修正しました。