【Unity】DOTSを少し試そうとしただけなのに2時間無駄にしないための備忘録

# 序文
Unityを2019.3に上げたこともあり、噂のDOTS(ECS?)とやらを試そうとしました。
しかし、なぜかオブジェクトが消えるなー、重力で落ちてるんかなー、うまくいかんなーと2時間くらい詰まったので、同じ轍を踏む人が減ることを願って記事化しました。

# 結論
**Package Manager から Hybrid Renderer をインストールしてください。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/f5ac7e3f-e691-91a2-31e6-f8f5ee487e4f.png)

Entities や Unity Physics だけインストールして満足しないでください。

そのおかげで、[公式チュートリアル](https://docs.unity3d.com/Packages/com.unity.physics@0.2/manual/getting_started.html)の通りにやっても実行と同時に画面上ではオブジェクトが消えてしまい、色々調べたりで彷徨ってしまいました。

最初は Physics 的な設定が出来ておらず、オブジェクトが奈落の底に落ちて消えていると勘違いしてしまいました。実際のところは従来のUnity EditorにはDOTSの描画機能が備わっておらず、別途packageのインストールが必要だったという訳です。

# 一応やったことも記す
環境は Windows10/Unity 2019.3.0f6 です。

UnityのシーンにDOTS的なオブジェクトを配置して Unity Physics で物理演算させます。

## packageのインストール
* [Windows]->[Package Manager]からPackage Managerを開き、[All packages] として [Advanced] から **Show preview packages** をonにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/9792ce48-ebd1-116a-4354-6fdc437c4617.png)

* **Entities** を選択し、[Install]します。
    * 当時のバージョンは `0.5.1` でした

* **Unity Physics** を選択し、[Install]します。
    * 当時のバージョンは `0.2.5` でした

* **Hybrid Renderer** を選択し、[Install]します。
    * 前述のとおり、本記事の肝です
    * 当時のバージョンは `0.3.3` でした

## シーンに配置する
staticな Cube に落ちてきた Sphere が衝突して軌道を変えるという何の面白みもないシーンを作ろうと思います。

![physics.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/e62be091-d55e-4d53-42eb-e1cd508bde05.gif)

内容はほぼ[公式チュートリアル](https://docs.unity3d.com/Packages/com.unity.physics@0.2/manual/getting_started.html)に準拠しています。

### static なオブジェクトの配置

* Hierarchy から右クリックで[3D Object]->[Cube]で Cube を生成します。
* Cube を選択し、Inspector から `Box Collider` を **Remove Component** します。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/b0019862-3461-be8c-99cb-260d643ff98a.png)
* `Physics Shape` を Add Component します
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/1ab63baf-1f2e-202d-c19c-71d4d3c4d826.png)
* この時、警告ぽい表示が出ますが、 `Convert To Entity` を **Add Component** すると消えます。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/943c6243-4529-51a3-3fee-95d4f952c63d.png)

ここで配置したCubeは動かない静的なオブジェクトになります。床などを配置したいときはこのように設定すると良いようです。

### dynamic なオブジェクトの配置
* Hierarchy から右クリックで[3D Object]->[Sphere]で Sphere を生成します。
* Sphere を選択し、Inspector から `Sphere Collider` を **Remove Component** します。
* `Physics Shape` を **Add Component** します。以下の様に、Shape Type を `Sphere` とします。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/d34a0a1a-a378-4ef1-bd58-e29cdee561be.png)
* `Physics Body` を **Add Component** します。以下の様に、Motion Type を `Dynamic`
 とします。
    * ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/b0a5dc05-9751-4bfc-33d1-7d516920fb90.png)
* Cube と同様に `Convert To Entity` を **Add Component** します。

あとはいつも通り再生すると Sphere が落ちて Cube に衝突します。例では少し Cube を傾けてます。
なお、再生中は Hierarchy から Cube と Sphere が消えて **DebugStream.DrawComponent** なるものが代わりに現れます。
Cube と Sphere の情報が見たければ、[Windows]->[Analysis]->[Entity Debugger] から情報が見れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274974/bb990303-4e78-e280-0a9e-59e8f64b89bd.png)
(見方がわからん...)

# まとめ
チュートリアルも前提情報を省いてたりするので油断なりませんね。
引き続き勉強しようと思います。