FarmRPG　Unity PlayerBasics Part3  idle+walkのアニメーターコントローラーを作成

# 概要
今回は前回作成した静止状態(idle)のみのアニメーションコントローラーに歩行(walk)を加えます。

idle->walkを再生
![idoleToWalk.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/70d1f3ec-f0c4-a787-34af-76ca95556ec7.gif)



walk->idleを再生

![WalkToIdle.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/6fcad05b-d13b-d5b1-bc5f-2d9b21694a41.gif)


# 開発環境

IDE:Rider
Unity:2020.3.42(LTS)
OS:Windows10

## Animator Controllerの修正

### 前提
静止時のAnimationContorllerが実装されているものとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/97599762-1f37-1657-85ad-7baded6790af.png)


Idleサブステート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/80a726fb-edbb-a0d7-e986-a205ddd8817b.png)



### パラメータの追加
以下パラメーターを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/eb1b2c2f-33af-cfda-eddd-529e4afe97c8.png)


パラメータ名|型|説明
------|---|---
xInput|float|0の時はIdle 正の数の場合は右に移動 負の数の場合は左に移動
yInput|float|0の時はIdle 正の数の場合は上に移動 負の数の場合は下に移動
isWalking|bool|true→サブステート Walk  false→サブステート Idle

### サブステートマシン　Walkを作成
Base Layerで新規サブステートを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/19e3ee57-b82e-ca90-59df-20a3e0967495.png)


### Walk内にStateを作成
空のステートを４個作成します。名前をWalkRight WalkLeft WalkUp WalkDownに変更します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/91ba840a-72c3-7b42-0695-f511df72998e.png)



### transition作成(Idle→Walk)
#### 遷移線を追加
以下gif画像は　IdleDown→WalkDown間で遷移線を繋げている操作です。

![っｒてｗっｔっｒてｗｔｒｗｔｒうぇ.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/e24aa0e9-61a8-ae3a-3ecd-86a672e125ef.gif)



#### TransitionにConditionsを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/6a26e106-ed58-ce8c-567e-f175819b9c5d.png)


Transition|xInput|yInput|isWalking
----------|-----|------|-------
IdleDown -> WalkDown| 0 | Less than -0.01| true
IdleDown -> WalkUp| 0 | Greater than 0.01| true
IdleDown -> WalkLeft| Less than -0.01 | 0| true
IdleDown -> WalkRight| Greater than 0.01 | 0| true
IdleUp -> WalkDown| 0 | Less than -0.01| true
IdleUp -> WalkUp| 0 | Greater than 0.01| true
IdleUp -> WalkLeft| Less than -0.01 | 0| true
IdleUp -> WalkRight| Greater than 0.01 | 0| true
IdleLeft -> WalkDown| 0 | Less than -0.01| true
IdleLeft -> WalkUp| 0 | Greater than 0.01| true
IdleLeft -> WalkLeft| Less than -0.01 | 0| true
IdleLeft -> WalkRight| Greater than 0.01 | 0| true
IdleDown -> WalkDown| 0 | Less than -0.01| true
IdleDown -> WalkUp| 0 | Greater than 0.01| true
IdleDown -> WalkLeft| Less than -0.01 | 0| true
IdleDown -> WalkRight| Greater than 0.01 | 0| true
 


### transition作成(Walk→Idle)

#### transitionを追加
遷移元：Walk 遷移先:IdleにしてTransitionを追加します。



#### TransitionにConditionsを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/5cacc2a0-5997-4c6c-5d3f-e45c5c57fc9a.png)


Transition|xInput|yInput|isWalking
----------|-----|------|-------
WalkDown -> IdleDown| 0 | Greater than -0.01(0を含む)| --
WalkDown -> IdleDown| 0 | 0| false
WalkUp -> IdleUp| 0 | Less than 0.01(0を含む)| --
WalkUp -> IdleUp| 0 | 0| false
WalkLef -> IdleLeft|  Greater than -0.01(0を含む)| 0 | --
WalkLeft -> IdleLeft| 0 | 0| false
WalkRight -> IdleRight| Less than 0.01(0を含む)|0| --
WalkRihgt -> IdleRight| 0 | 0| false


# 参考

## C#

## Unity Editot コンポーネント

## Unity スクリプト

## その他

Section5

https://www.udemy.com/course/unity-2d-game-developer-course-farming-rpg/learn/lecture/19844206#overview