【Unity】自分の思い描いたキャラクターを作成し、最速で動かす

##はじめに
Unityでゲームを作る際、
自作のキャラクターをUnityの空間上で走り回らせたいとお考えの方へ

私もネットで調べて、候補となるツールのバリエーションに圧倒され、
**「結局どれを使えばいいんだ！」**と悩みました

そのため、各作業ごとのオススメのツール(無料)を紹介しながら、
実際に動き回るところまで説明していきたいと思います。

##全体像
モデル作成から動かすまでの流れはこんな感じ
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/8bd20073-a050-be7e-e76b-e0ff2b85d6fe.png)

最短で自作キャラをUnity上で動かすには、
Unityの「Humanoid」型のモデルを作成するのが手っ取り早いです。
![Untitled Diagram (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/9c547ee2-8625-f0c8-74c6-3ad719a86157.png)

「Humanoid」型のモデルとは特定の骨を持つモデルのことで、
この骨格を持つモデルを作成することで、AssetStoreから取得したモデル(ユニティちゃんなど)のアニメーションを自作キャラクターに反映させることができます。

**要は上記画像の「2.骨入れ」を決まった形で作成することで、
「3.アニメーションの作成」をすっ飛ばすことができます。**
今回はこの方法で最速で作成をしていきます。

##モデル作成
選択肢が多いモデル作成について、作りたいもの別に3種類紹介します。

![Untitled Diagram (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/144fdc1c-4952-1948-cdfa-687ed0fab352.png)

今回はSCULPTRISを使用してモンスターをつくていきたいと思います。
今回使用しないツールについては、参考リンクを貼っておきます。

・VRoid
[「VRoid Studio」で作った3Dモデルを「Unity」で踊らせてみよう](https://3owebcreate.com/web/design/vroid_studio_dance)

・123D CATCH
[友人をスマホで撮影して3Dモデル化してUnityで動かしてみた]
(https://yandod.github.io/blog/2015/02/01/123d-blender-unity/)

##モデル作成（SCULPTRIS）
直感的に作業を行えるため、深くは説明しません。

紹介・インストール方法が記載されている[ここ](https://xr-hub.com/archives/4779)を参考に、
思い思いのキャラクターを作ってみましょう。

最後にデータをエクスポートして完了です。
[ここ](http://am1tanaka.hatenablog.com/entry/20120924/1348498452)を参考に、.obj(モデルデータ)・.png(テスクチャーデータ)を保存しましょう。

公式ガイドは以下です
[Sculptris Alpha6 日本語ガイド](https://oakcorp.jp/zb/Sculptris_Alpha6_JPDOC.pdf)

##骨入れ
上記モデル作成でどのツールをしようしたとしても、骨入れ作業はBlender一択になります。
Blenderでは骨入れ以外にもモデル作成など、様々なことができるそうなので詳しくは[こちら](https://blender-cg.net/)をみてください。

### インポート・位置調整
基本的には[こちら](https://yugalab.net/archives/2395)参考に進めてください。

1.ファイルから、インポート > Wavefront(.obj)を選択
![スクリーンショット 2019-08-28 20.47.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/3a331d52-64b3-f2fe-6f10-dbb55cf3af35.png)

2.Cubeを削除し、Amatureを選択・下の箱のアイコンをクリックし、位置情報の表示
![スクリーンショット 2019-08-28 20.34.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/4283fcfb-be18-2512-09e5-7889b0521bf5.png)

3.青(上下)・赤(左右)・緑(前後)の矢印をスライドさせ、足の裏が赤緑の面にちょうどくっ付くように調整
![スクリーンショット 2019-08-28 20.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/450fc251-ff8e-b95e-4dd7-7b01924b110c.png)

テスクチャの適用は行う必要ありません、これで準備は完了です。

###骨入れ
基本的には[こちら](https://www.wwwmaplesyrup-cs6.work/entry/2018/11/01/113345)参考に進めてください。

1.Shift + a でメニューを表示、アーマチェア > 単一ボーンを選択
![スクリーンショット 2019-08-28 21.00.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/77445160-01ca-ccf0-89eb-2c14541d780e.png)

2.Amatureを選択した状態で、レントゲンオプションをオンにする
![スクリーンショット 2019-08-28 21.04.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/be70c255-b5ab-2236-63be-495ee6f8f93a.png)

3.参考リンクを参照に骨入れをする
**(<重要>骨の数と名前を一致させてください)**
![スクリーンショット 2019-08-28 21.12.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/50d8a283-2848-5a4d-66fb-2354f4944c66.png)

4.モデルとAmatureを選択
![スクリーンショット 2019-08-28 21.15.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/12361a21-f19b-5de1-b42b-211822966639.png)

5.ファイルから、エクスポート > FBX(.fbx)を選択肢し、指定フォルダに保存
![スクリーンショット 2019-08-28 21.15.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/21220cdb-7d9e-5671-dec2-a6c812be53f1.png)

##Unityでの作業
AssetStoreからモーションデータを取得し、モデルに設定しましょう。

1.AssetStoreから「Unity-Chan Model」をインポート
![スクリーンショット 2019-08-28 22.26.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/244ccb47-5b16-ea22-862c-0209c292a6f9.png)

2.右グリックでCreate > Animator Controllerを選択し、
作成したコントローラーをダブルクリック
![スクリーンショット 2019-08-28 22.37.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/5bb45a53-e3ef-6da0-dc8f-c7eed214f126.png)

3.開いたウィンドウ上で右クリック、Create State > Emptyを選択
![スクリーンショット 2019-08-28 22.41.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/128bd149-095e-01eb-3ff2-a7009b319b6b.png)

4.Inspecterから名前を「Run」などに変更し、Motionを選択
※今回はUnity-Chanの「RUN00_F」を使用します
![スクリーンショット 2019-08-28 22.43.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/51bb0f0a-e1d8-29aa-4efc-7d1f7372b22e.png)

5.もう一度Stateを作成し、Inspecter上で編集
※Stopと名付けて、「POSE01」を設定します
![スクリーンショット 2019-08-28 22.47.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/7cdb7d10-01c4-5049-e4db-b0591f80308a.png)

6.AnimatorウィンドウでParametor上でBoolを選択し、run変数を作成
※アニメーションの状態遷移を切り替える変数を作成します。
![スクリーンショット 2019-08-28 22.46.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/5ece68ac-8967-5e3d-d7c3-c4ce88eb0d53.png)

7.先ほど作ったRunとStopをそれぞれ右クリック、Make Transitionを選択し、
InspecterのConditionsを画像の通り設定
※run変数が指定した状態になるとアニメーションが切り替わる仕組みです。

![スクリーンショット 2019-08-28 22.50.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/637b2a92-b250-a37a-3312-ca35d3bd8873.png)
![スクリーンショット 2019-08-29 20.59.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/3102e351-478a-7b6c-7042-c9c2fc99e065.png)

8.作成したコントローラーをモデルのAnimatorに設定
![スクリーンショット 2019-08-29 21.26.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/392b16a4-6a16-f0d0-a9ae-5674e5f830d2.png)

9.以下のスクリプトを作成し、モデルに設定

```c#:Model.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Model : MonoBehaviour
{
  private Animator animator;
  // Use this for initialization
  void Start () {
      animator = GetComponent<Animator>();
  }

  // Update is called once per frame
  void Update () {
      if (Input.GetKey("up")) {
          transform.position += transform.forward * 0.05f;
          animator.SetBool("run", true);
      } else {
          animator.SetBool("run", false);
      }
      if (Input.GetKey("right")) {
          transform.Rotate(0, 10, 0);
      }
      if (Input.GetKey ("left")) {
          transform.Rotate(0, -10, 0);
      }
  }
}

```

完成！
![スクリーンショット 2019-08-29 21.34.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378268/e036f545-e9b7-9cff-15ad-bf130514ff00.png)

##まとめ
sculptrisでキャラクターを作成するのに最初は時間がかかると思いますが、
慣れれば、この一連の作業で1時間かからずに終わると思います。

今回はAnimationをAssetStoreのものを使用しましたが、
Blenderを使えば自作アニメーションも作れます！

VtuberやVRChatなど遊びの幅も広がると思うので、ぜひ試してみてください！