Unityで初めてのゲーム制作 3rd Mission: アニメーション1

### 3rd Mission Start!!

## アニメーション
モデルのインポートが終わったので、次はアニメーションを設定していきます。
とりあえず初めに設定するのは、以下のアニメーションです。

- 何もしない
- 移動（手ぶら）
- 移動（剣装備）
- 攻撃（3段階）
- 防御
- 軽ダメージ
- 重ダメージ
- 死亡

他にも増やすことになるかもしれませんが、まずはこの10アニメーションを設定します。
各アニメーションは既にインポート済みなので、あとは実際にPlayerにアニメーションを設定していく作業になります。

最初にAnimatorの完成形がこちらです。
**Base Layer**
![スクリーンショット 2022-10-23 12.46.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/217fec03-a6a9-4422-e9ba-ded59d9947b0.png)

**Attacks**
![スクリーンショット 2022-10-23 12.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/9a1a9d74-2c38-dedd-8be9-0a7f848f3099.png)


**Damages**
![スクリーンショット 2022-10-23 12.50.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/ea125b74-daf5-457c-af7d-0ac04f5d51a4.png)

## 各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）

![スクリーンショット 2022-10-23 15.42.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/a3205186-fd14-dd26-dfd7-2e5f8b48bdea.png)
DeathじゃなくてDieの方が命名として相応しそうですね。。。

### Transition
#### 知識メモ
**Has Exit Time**
ONにすると、設定したところまでアニメーションを再生したあと、次のアニメーションに遷移します。
OFFにすると、条件を満たせばすぐに次のアニメーションに遷移します。

**Transition Duration**
Has Exit TimeがONの時のみ機能。
次のアニメーションに遷移するための受付時間的なものです。
この受付時間中に条件が満たされると次のアニメーションに遷移します。

**Conditions**
アニメーションの遷移条件。
先ほど作成したパラメータが利用できます。

#### 各Transition詳細
個別に記載していくとかなり大変なので、設定画面のスクショを貼り付けていきます。
構想中のゲーム的に起こり得ないアニメーションの遷移は実装しておりません。

- 『何もしない』から『Entry 攻撃サブステートマシン』
![スクリーンショット 2022-10-24 1.51.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/0ea14285-b5c8-279e-eb65-3d706fc5b8e8.png)

- 『何もしない』から『防御』
![スクリーンショット 2022-10-24 1.51.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/17e70fc1-63a7-ae83-d5ef-7d42d65a8f6d.png)

- 『何もしない』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 1.51.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/4c0f7c2e-578c-b2d6-730c-2e8a7c98e267.png)

- 『何もしない』から『移動（手ぶら）』
![スクリーンショット 2022-10-24 1.51.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/97c74102-4afd-3b42-8835-66a24c0f1709.png)

- 『何もしない』から『移動（剣装備）』
![スクリーンショット 2022-10-24 1.52.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/70f4500e-a7df-6423-0226-61696e46fc67.png)

- 『Entry 攻撃サブステートマシン』から『攻撃（1段階目）』
「Set as Layer Default State」によって設定しているので条件等なし。

- 『攻撃（1段階目）』から『攻撃（2段階目）』
![スクリーンショット 2022-10-24 1.53.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/65ed8b3b-4bf2-d8d1-a7bc-92ac6c6c9e7c.png)

- 『攻撃（1段階目）』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 1.53.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/ace2a5d7-0473-ba3a-e7a2-c8f13be97a8d.png)

- 『攻撃（1段階目）』から『Exit 攻撃サブステートマシン』![スクリーンショット 2022-10-24 2.09.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/3b9ddcad-8ec6-506b-34ff-a020a86407ae.png)

- 『攻撃（2段階目）』から『攻撃（3段階目）』
![スクリーンショット 2022-10-24 2.00.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/138fd123-c7b1-813d-ea33-d86c3791e786.png)

- 『攻撃（2段階目）』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.10.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/0a332906-b862-1a24-53d4-d522da809963.png)

- 『攻撃（2段階目）』から『Exit 攻撃サブステートマシン』
![スクリーンショット 2022-10-24 2.10.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/ae788de4-b823-f96e-5b7b-1161e8dd4102.png)

- 『攻撃（3段階目）』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.10.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/32c32d6d-b153-7204-ddf5-88ee81eed1c2.png)

- 『攻撃（3段階目）』から『Exit 攻撃サブステートマシン』
![スクリーンショット 2022-10-24 2.11.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/8df48e90-0b55-a166-a42d-0a737c1b2f3c.png)

- 『Exit 攻撃サブステートマシン』から『何もしない』
![スクリーンショット 2022-10-24 2.17.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/e741db48-84dc-fd2f-8d2c-185f11bf25c8.png)

- 『防御』から『Entry 攻撃サブステートマシン』
![スクリーンショット 2022-10-24 2.11.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/4bdc73c3-040c-d55e-59cb-832153bf6878.png)

- 『防御』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.12.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/adb1b11f-29cc-9baf-0fe9-f01e75e6bbeb.png)

- 『防御』から『何もしない』
![スクリーンショット 2022-10-24 2.12.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/f98051f3-ed3a-f331-0611-72c51908241f.png)

- 『Entry ダメージサブステートマシン』から『軽ダメージ』
![スクリーンショット 2022-10-24 2.13.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/57dcbc64-d772-8105-8440-c2caba65be33.png)

- 『Entry ダメージサブステートマシン』から『重ダメージ』
![スクリーンショット 2022-10-24 2.13.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/9176c7ad-6717-92e6-4432-e33f58e0b3e2.png)

- 『Entry ダメージサブステートマシン』から『死亡』
![スクリーンショット 2022-10-24 2.14.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/d2b6fc97-d480-f52e-2fae-ef780c4ff39b.png)

- 『軽ダメージ』から『Exit ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.15.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/d5ddb161-5c0f-4dde-2ee9-e43506ec5224.png)

- 『重ダメージ』から『Exit ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.15.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/0b0897e0-8c99-9278-5d1b-61e9ae8eedbe.png)

- 『Exit ダメージサブステートマシン』から『何もしない』
![スクリーンショット 2022-10-24 2.17.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/b21a3890-c3cf-23b2-f2ab-7b1908d82a7c.png)

- 『移動（手ぶら）』から『何もしない』
![スクリーンショット 2022-10-24 2.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/9e1b3f50-3b90-8688-7309-8376cd009bcb.png)

- 『移動（剣装備）』から『Entry 攻撃サブステートマシン』
![スクリーンショット 2022-10-24 2.18.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/6090ef8b-125f-13f4-d686-e7cd8390be28.png)

- 『移動（剣装備）』から『防御』
![スクリーンショット 2022-10-24 2.18.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/fc1cba5c-34b1-c29e-a5f9-3d113342fe33.png)

- 『移動（剣装備）』から『Entry ダメージサブステートマシン』
![スクリーンショット 2022-10-24 2.18.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/77ff6242-751d-a041-11c3-631cec0e67e6.png)

- 『移動（剣装備）』から『何もしない』
![スクリーンショット 2022-10-24 2.18.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/cc3678bb-c5e9-ab51-0ed7-ed1d9143b398.png)

完成したアニメーションの一部はこんな感じです。
![アニメーション.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389504/10a2f696-9d59-e406-bc2c-f31a92f4711b.gif)

『攻撃（3段階目）』の終了手前、どこを向いているんだという感じだったので、このあとアニメーションをトリミングして綺麗に元の姿勢に戻るよう修正しました。

### 3rd Mission Cleared!!