MagicaVoxelで作ったモデルでTPSを作る

#MagicaVoxelで作ったモデルでTPSの動きを作る

##準備
###前回の記事
https://qiita.com/mikuhaku0914/items/8e9943796f1eb4443c72

前記事でMagicaVoxelでモデルを作り、それにBlenderでBoneを入れて、UnityにImportまで行いました。今回はこれにアニメーションをつけ、さらにアレンジしてTPSで銃を構えられるように整えていきたいと思います！
###Lighting設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/f833415c-0bd2-14dd-68c7-a78ca6154e71.png)

windowからRendering＞LightingでEnvironmentの中の

・EnvironmentLightingのSourceをColor
・EnvironmentReflectionsのSourceをCustom

に変えると明るくなるのでやってみよう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/073a76f4-eeed-ce73-ce60-e7b9ac49e468.png)
こんな感じ

###確認

https://qiita.com/mikuhaku0914/items/8e9943796f1eb4443c72#unity%E3%81%A7%E4%BD%9C%E6%A5%AD

Unityで作業の設定をもう一度確認しておこう！Humanoidになってるかな？


###必要なもの
Unityちゃんのアニメーション

https://unity-chan.com/download/index.php

Unityちゃんのアニメーションをインポートしましょう。


##①Animatorを使いこなそう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/9a6cb7b1-bddf-84e7-4b8d-a1907b4d2641.png)

ここにある、Animatorを使います

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/364b7058-d686-140a-4d4d-65eef4c249cb.png)

####UnityChanの中にあるAnimatorsをProjectビューでで選択してみましょう！

そうするとAnimatorの画面が切り替わります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/3d83eba7-42bc-5705-827d-cbb19ec033a6.png)

例えばこんな感じで、四角と矢印で構成されたアニメーターが存在しています。
今回はこれをオリジナルで作っていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/28db62ca-82af-ead3-7fa1-4470a1268b61.png)

####①ProjectViewでCreate→Animator Controllerで新規アニメーターコントローラーを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/fef6da33-12ff-3add-8183-fae7db781956.png)
こんな感じ。名前はなんでも良いですが、、。


この画面が開いているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/2180b426-7be3-d6d5-46c9-ce4844d0eb49.png)

####②Paramatersを追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/8d0d468b-b58b-fee4-d346-1252f1d61f3a.png)

ここから「RUN」と「JUMP」という二つのBoolを作ってください。
これらはアニメーションをするために
今「RUN」「JUMP」しているか？という判定を取るために使います。
RUNがtrueのときにRUNのアニメーションを、JUMPがtrueのときにJUMPのアニメーションをするように設定していきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/5a46d5a2-bdd9-9959-68ac-8d9ba70606a0.png)


Layers＞BaseLayerを編集していきます！

UnityChanTPSを選択した状態でAnimatorに目を移すと、初期状態になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/84aefc21-9aa2-714f-a677-8cc55d0f20cc.png)

####③これを編集していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/c5996a7b-8a4e-f684-bb90-089f4271dece.png)
何もないところを押して、CreateStateからEmptyを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/1e1252be-47cf-b88c-c39f-81453ede876c.png)
RUNとしましょう。走る動作は、TPSにおいて全ての動作の前に入ってくるので
Entryから矢印でつながっている最初の動作として設定します。（一番最初に作れば、オレンジの線で勝手に繋がります。）

RUNを選択して、inspector欄のMotionにRUN00_Fを追加してください。

この記事ではJUMPという動作のみ足して書いていくので、一通りやり方を試してみた後に、HIT、BACKなど必要な要素は自分で後々足してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/b488e42f-8a9f-6e32-a677-f36a0d4ebb68.png)

さっきと同じやり方でJUMPを追加します。MotionにはJUMP00をつけましょう。


####④矢印で繋げます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/96c028c5-c60f-b0ff-6077-3cb8ac4017f0.png)

RUNを右クリックしてMakeTransitionをします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/a93c17ab-b0d5-964f-c29d-f61bef4af7ef.png)

そのままJUMPをクリックするとこうなります。


同じようにJUMPからRUNへも矢印を伸ばしましょう。
次にAnyStateからRUNへも矢印を伸ばしましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/32caec0c-1d7f-d26e-e43a-bda5c73e2b2d.png)
こうなっていればOKです！
　

####⑥Transitionの設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/fe4ab049-cc71-413a-2f07-dfeec2a5dad7.png)
矢印をクリックしてみよう。青くなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/d51b8f6f-b2fa-0005-cb9d-a8477bf91cbc.png)
インスペクターにConditionsが出るので、このListを追加していきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/05c4b729-64ea-d211-ef67-fca45c1d4f94.png)
こんな感じ。

AnyState（どんな状態）からでも、RUNがTrueの時はRunのAnimationが再生されるようになります。

同じように
RUN→JUMPの矢印にJUMPがTrueの時という条件設定をしてください。

####⑦ 関連付け

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/394213/fd06094a-f47a-5962-6634-25e296173796.png)
CharaChanのinspectorをいじります。
Animatorの中の
ControllerをUnityChanTPSに
AvatarをCharaChan1Avatarに設定しましょう


####⑧ コードを書く

まず宣言

```c#:c#
private Animator animator;

    void Start()
    {
        animator = GetComponent<Animator>();
    }
```

ジャンプする動作のところで
`animator.SetBool("JUMP", true);`を入れてあげましょう


そうすると最初に設定したパラメーターのJUMPの場所にチェックマークがつき、アニメーションの動作が矢印を通ってRUNからJUMPに変わります


ジャンプが終わったら
`animator.SetBool("JUMP", false);`でfalseに戻してあげます
そうするとまた走り始めます

これはプレイヤースクリプトなど走る、曲がるなどの制御をしているスクリプトに入れてあげましょう。ではでは。


##完成