Unity で unitychan をプログラム無しで動かす (Unity 2019.3.2f1)

# やること

Unity でキーボードとマウスでユニティちゃん (unitychan) をプログラムをまったく書かずに動かせるようにします。

参考1:
- https://qiita.com/uneri/items/9dd5123eac8ef7ec8082
- https://miyagame.net/unity-chan-move/

最初、上記あたりのページの通りにやろうとしたところ、環境が微妙にことなるせいなのか、同じ選択肢が出てこなかったり、同じ操作をしても同じ結果にならなかったりといろいろ問題が起こったので、別の方法でやってみました。というか、ほぼデフォルト＋下記URLの通りなんですが、バージョンの違いのせいなのかデフォルト状態が違うようなので、いろいろ情報を補足してみました。

参考2:
http://socialakiba.com/index.php/%E3%83%A6%E3%83%8B%E3%83%86%E3%82%A3%E3%81%A1%E3%82%83%E3%82%93%E3%81%AE%E5%9F%BA%E6%9C%AC%E8%A8%AD%E5%AE%9A

# 用意

- Windows 10 Home のインストールされているPC
- Unity 2019.3.2f1
- Unitychan Model 1.2.1

Unity Hub は 2.1.2 を使用してます（多分 Hub の使用の有無やバージョンは動作に関係ないです）。

# 手順

## プロジェクトの作成と Asset のインポート

Unityで3D の新規プロジェクトを作成します。プロジェクト名は何でもよいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/af77a93a-6326-25e6-8ef0-7b17f18adffd.png)

Unity が起動したら、Window → Asset Store を開きます。

![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/cc079624-cac2-b56c-9dd7-af55d34e9e7e.jpeg)

Asset Store を開くと、Unity Asset Store と上部に書かれた画面がでます。Storeに表示される画像や表示は、下記と多少異なっているかもしれません。ちなみにネットがつながっていないと開けません。

![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/fe0c9b79-b7b0-31cc-1b28-74111992b689.jpeg)

虫眼鏡のアイコンをクリックすると、キーボードからキーワードを入力できるようになります。そこで Unitychan と入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/d81424d6-7559-9162-e38f-d3f0ef08bdfd.png)

すると、たぶん Unitychan という候補が表示されるので、それを選択します。選択すると、Unitychan 関連のいろいろなAssetが表示されます。これらの中から、"Unity-chan!" Model というアセットを探してクリックします。

![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/3b4c9a48-51a8-57ac-4475-c4a8b953b30a.jpeg)

クリックすると、下記のような表示になります（Unitychan のイラストは違っているかもしれません）。

![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/8889699a-f596-1477-fc29-e67969c79d58.jpeg)

下のほうにスクロールしていくと、Download というボタンがあるので、それを押します。

![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/78ffffe8-5c96-b379-bbb2-80359a0c0717.jpeg)

ボタンを押すと、場合によっては Unity にログインするためのウィンドウが出ることがあります。もしウィンドウが出たら、アカウントとパスワードを入力して、再び Download のボタンを押します。

![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/a4d1d56c-7caf-57d1-e9d1-50aa9c0ed33c.jpeg)

ダウロードが完了すると Import もしくは「インポート」という表記に変わるので、そのボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/fe0f4b87-1c86-0cfb-6340-297bd30fbc0a.png)

このようなウィンドウが表示されるので、右下の Import のボタンを押します。インポートの処理は、PCの処理能力によってはかなり時間がかかることがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/77640136-442d-db43-5722-5b122ea83093.png)

インポートが完了すると、Unity のウィンドウの下にある Project というパネルの中の Assets の中に Unity-chan! というフォルダができます。これでインポートは完了です。

## Unitychan モデルの配置

最初に、中央のパネルで Scene タブが選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/57adfdc9-f988-9a17-0111-91e5165f520f.png)

選ばれていれば、上のような地平線と太陽、カメラみたいなマークが見えている画面になっているはずです。

Unitychan を配置する前に、モデルを置く平面を作成します。これを作成しないと、Unitychan を動かそうとした瞬間、Unitychan が奈落の底に落ちていくことになります…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/2d74ce3b-b2e0-75ef-9551-8a6bbd44b75d.png)

GameObject → 3D Object → Plane と選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/9ec639b7-ae8e-ecfc-e219-824df4d4d717.png)

この操作で、平らな地面みたいなものが追加されます。これで平面の追加は終了です。

次に Unitychan を配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/abd60ffa-3369-e8c6-1cc8-8416319e1801.png)

Unity の下側にあるパネルの Assets から順番に階層をだどって、Assets → unity-chan → Unity-chan! Model → Prefabs → for Locomotion と選んでいきます。すると、右側に unitychan.prefab と書かれたアイコンが出てきます。この unitychan.prefab は他の場所にもいくつかあって、配置する unitychan.prefab を間違うとうまく操作できなかったりします。

このアイコンをドラッグドロップで、平面が置かれた Scene の中に持っていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/0a03c2f9-e417-e189-0c79-13b5a8b6bd44.png)

すると、上のように Unitychan のモデルが表示されるので、これをマウスでドラッグして中央あたりまでもっていきます。Unitychan を置いたら、Unitychan をクリックして選択状態（青い枠みたいなものが付いた状態）にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/2ba254b3-e034-91cf-20e6-27a99ee21b0e.png)

すると、右側の Inspector というパネルが表示されて、一番上に unitychan と表示されているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/6f0dfaee-163d-ae92-13c7-bd6c1f14cade.png)

これが表示されている状態にします。

ここまでで、モデルの配置は終了です。次に unitychan を操作できるようにします。

## Unitychan をキーボードとマウスで操作できるようにする。

Inspector の Tag のメニューから、Player を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/3e37ddf8-2e69-24f2-12c2-e33b6e32bc2a.png)

下のほうにある Animator にチェックが入ってることを確認します。入っていなければ、チェックを入れます。Animator タブの中にある、Controller の項目の右端にある的みたいなマークを押します。すると、下のようにいくつかの Controller が Assets の中から選べるのでここで UnitychanLocomotions を選びます。これも、最初から選ばれていれば、そのままで問題ありません。この設定が正常にされていないと、Uintyちゃんがキー操作で動いてくれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/a2e263cc-e1bf-5721-b286-d667e5d64ee0.png)

Inspector を下のほうにスクロールしていき、Capsule Colider と Rigidbody にチェックが入っていることを確認します。チェックがはいっていなければ、チェックを入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/2fdc22e4-0339-6c29-0b4b-fb187c9b0a90.png)

Capsule Colider について X, Y, Z, Radius, Height の数値が上のようになっていることを確認します。これらは、Unitychan が他の物体（平面）とぶつかったときに、Unitychan 
 が他の物体をすり抜けてしまわないようにするための設定です。Capsule Coliderにチェックが入っていないと、Unitychan を動かした瞬間、平面をすり抜けて奈落の底に落ちていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/6fbefb2a-daa5-9f1a-5fe7-5e00b2f9de3d.png)

Rigidbody については、Constraints の中の Freeze Rotation の x, y, z にチェックが入っていることを確認します。これは、Unitychan がそれぞれの軸に対して傾くことを禁止する設定です。この設定をしていないと、Unitychan が歩くたびに、だんだんと Unitychan が傾いてしまったり、転倒してしまったりします。

Inspector をさらに下に進んで、Unity Chan Control Script という項目にチェックが入っていることを確認します。チェックされていなければチェックを入れます。この設定がされていないと、Unitychan が動いてくれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/aced0e0e-bee4-527c-0439-841fe035d107.png)

もし、この項目が存在しない場合は、さらに下のほうにある Add Component というボタンを押します。Add Component ボタンを押すと、キーボードから文字を入力して検索できるようになるので、ここに Unity と打ち込みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/7cef8d96-ab26-4f53-26de-3cab3f20c8f6.png)

すると、このように Unity Chan Control Script With Rigid Body という項目が出てくるので、これを選びます。あくまで、この操作は Inspector の中に Unity Chan Control Script というタブが存在しないときだけ行います。もし、タブがすでに存在するのに Add Component すると、下の図のように Unity Chan Control Script というタブが二つできてしまうことがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/9d819a35-230f-6014-c9ce-a0e6ab058080.png)

こうなってしまったら、タブの右端にある点線アイコンを押してメニューを出し、Remove Component を選びます。これで重複したタブを削除できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/89da96f2-d653-3daa-65c4-bcfd98580350.png)

## 操作してみる

設定がうまくいっていれば、画面上部にあるプレイボタンを押すことで、Unitychan を操作できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/7f00a127-d62d-4980-d332-45cc9022bf80.png)

キー操作は画面に書いてある通りです。 W,A,S,D でも操作できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/69ed38df-8f9b-0d58-6d2e-0419cfd25880.png)

Unitychan が平面端から落ちてしまったら、再生ボタンを押しなおすことでリセットできます。

# カメラを Unitychan に追従させる

ここまででも動かすことはできていますが、Unitychan を固定されたカメラから見ている視点になっていて、直感的な操作がしにくいです。そこで、自分の視点がUnitychanのを後ろから追随する、いわゆる第三者視点（Third Person View）になるようにします。

## カメラを第三者視点化する

画面左側にある Hierarchy パネルの中にある Main Camera という項目を選びます。Inspector のタブに Main Camera と表示されていれば、カメラの選択に成功しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/de7d6556-fb2f-eaea-55b2-69f4064a82d6.png)

Main Camera を選んだ状態で、Inspector を下のほうにスクロールしていくと、Add Component ボタンがあるので、これを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/def7010c-8514-88ba-b274-5173c28f46fc.png)

キー入力で検索できるようになるので、ここに Third と入力します。すると、Third Person Camera という項目が選べるようになるので、これを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/5d1f7f7a-9a8e-239e-eeed-0e68400213a2.png)

選ぶと、Third Person Camera という項目が Inspector 内に追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/80d9ee3a-16d8-2c9d-3b4e-223a46d60328.png)

これでカメラの追従設定は終了です。再生ボタンを押すと、Unitychanの背後の視点から操作ができるようになっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/47ec9bbc-7019-7b61-2540-8861775503b9.png)

左側のControlキーを押すか、マウスの左クリックでUnityちゃんを前から見ることもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/c75e0841-dcfd-481e-1753-4c9b119448b6.png)

画面内にあるメニュー（ボタン）を押すことで、Unityちゃんの表情を変えることもできます。

## カメラの位置調整

正面のカメラがデフォルトでは少し遠い気がするので、近づけてみます。左側にある Hierarchy パネルから unitychan の左にある三角形を押して、下の階層の項目を表示させます。この中から FrontPos という項目を選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/fb3d8d5e-f4c2-c9ef-067e-50207fe56f2e.png)

Inspector に FrontPos （Unityちゃんの正面カメラの位置）の情報が表示されるので、ここの Z の項目の数字を下げます。デフォルトでは 2.6くらいになっているのを、1～1.5くらいにするとよい感じがします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/c4796da6-fa28-cdeb-321d-e1986b76fe5b.png)

数字を変更すると、Scene ウィンドウの中にカメラの位置が x,y,z 軸の矢印で表示されるので、それを見ながらよさそうな位置に移動させます。設定できたら再生してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266247/8f52f865-d24c-503b-b6d3-c68417500f57.png)

数値を調整すれば、もっとアップにすることもできます。

# トラブルシューティング

うまくいかない場合は、下記をチェックしてみてください。ひとつでも違うと、同じ操作をしても同じ結果にならないかもしれません。

- Windows 10 Home 以外（macとかLinuxとか）でやっている
- Unity のバージョンが違う。特にVRChat関係を触っていると、古いバージョンのUnityを使っていることがあり、同じ結果にならなかったりします。
- Unitychan Model を Asset Store ではないところから入手して import している。（これが非常によくあるぽい）
- Unitychan Model のバージョンが 1.2.1 ではない。これは、Asset Store でインポートするときに、Store のページで確認するしかないぽい？
- Unitychan を画面内に追加するときに、Assets → unity-chan → Prefabs → for Locomotion 以外の場所から追加している。
- 配置した Unitychan の Inspector の項目の中身が、ここまでの説明の通りになっていない部分がある。

ちなみに、Asset Store 上でバージョン表記が 1.2.1 になっている Unitychan Model をインポートしたときでも、Assets の中にある Documentation → Readme の ReadMe_jp の中のバージョン表記は 1.1.1 になっています（2020/2/26現在）。