強火で進め

このブログではプログラム関連の記事を中心に書いてます。

(現在プレビュー版の)Unity Physics を試してみる

Unity Physics は 100% DOTSで実装された新しい Unity の物理エンジンです。

f:id:nakamura001:20190418200344p:plain

GDCでの講演動画からの引用。

 

使い方

環境準備

対応しているのは Unity 2019.1 からなのでまだインストールしていない場合はインストールして下さい。

 

Unity エディタを起動し、メニューから Windows > Package Manager と選択。

 

Unity Physics はまだプレビュー版なので Advanced の所をクリック後、 Show preview package をクリックしてプレビュー版のパッケージも表示される様にします。

f:id:nakamura001:20190418201616p:plain

検索欄に Physics と入力して絞り込み、 install ボタンを押してインストールします。

f:id:nakamura001:20190418201839p:plain

 試してみる

床に球を落とす簡単なサンプルを作ってみます。

 

まずは床を作ります。 Cube を作成し、 Scale を (20, 1, 20) に設定して下さい。

Unity Physics に差し替える為に Box Collider コンポーネントを削除し、Physics Shape コンポーネント、 Convert To Entity コンポーネントを追加します。

 

次に球を作ります。 Shpere を作成し、床の上に移動させます。

Sphere Collider コンポーネントを削除し、Physics Shape コンポーネント、 Convert To Entity コンポーネントを追加します。

 

Physics Shape コンポーネントの Shape Type を Sphere に変更します。

f:id:nakamura001:20190418203016p:plain

球は床とは異なり、重力の影響を受けるので Rigidbody に当たるものを追加します。

Unity Physics では Physics Body がそれに当たりますので Physics Body コンポーネントを追加して下さい。

 

この状態で実行してみると実行した瞬間、床と球が描画上も Hierarchy からも消えてしまう事が確認できます。

 

これはDOTS(というか ECS)では(ざっくりと言うと)今までの Unity の世界とは別の世界で動いてるからです。

 

ECS 世界でのレンダリングを今までの世界に持ってくる場合には Hybrid Renderer というパッケージが必要です。 Package Manager を開き、 Hybrid Renderer をインストールして下さい。

 

インストール後にもう一度実行すると正しくレンダリングされたオブジェクトが物理法則に則って落下するのが確認できるかと思います。

 

もっと色々と試してみたい場合には GitHubこちらのリポジトリをクローンし、 UnityPhysicsExamples というフォルダのプロジェクトを実行してみて下さい。