投稿日更新日

【DOTS】Unity Physicsの公式デモをさわってみる

はじめに

近頃DOTSがアツいですね。DOTSとは、Unityの次世代基盤とされるデータ指向型のテクノロジースタックです。

今回はDOTS上で動く物理エンジンであるUnity Physicsについて、公式が用意したサンプルプロジェクトをさわってみたいと思います。

検証環境

  • 機種: MacBook Air(m1)
  • OS: MacOS Monterey(12.3.1)
  • メモリ: 8GB
  • Unity: 2021.2.16f1(SILICON)

サンプルプロジェクトの準備

Unity-TechnologiesのGithubリポジトリから、ECSのサンプル集リポジトリをクローンします。 https://github.com/Unity-Technologies/EntityComponentSystemSamples

クローンしたディレクトリ内のUnityPhysicsSamplesディレクトリをUnityで開きます。

エラー発生

Assets/Demos/1. Hello Worldディレクトリ内の、シーン1a. Hello Worldを開いて実行してみます。

physics_miss

あれれ。。オブジェクトが床をすり抜けてしまいました。 何が正解かも分からないですが、間違いなく何かおかしいですよね。

コンソールを確認してみると。。

Unity Physics エラーコンソール

System.IndexOutOfRangeException: Index {0} is out of range of{1}Length. This Exception was thrown from a job compiled with Burst, witch has limited exception support.

Index out of rangeみたいなエラーがいっぱい。。

解決方法

ネットの海をさまよって1時間半、ついに解決方法が載ってるサイトが見つかりました。 https://forum.unity.com/threads/2021-2-8f1-broke-asdeferredjobarray-and-deferred-jobs.1225635/#post-7815393

こちらのUnityのフォーラムです。tertleさんという方が方法を示されていたのですが、それはもう彼への賞賛の嵐でした。 みんなこのエラーで詰んでたんですね。。

手順

  1. Library/PackageCache/com.unity.collections@0.15.0-preview.21ディレクトリをコピーして、Packagesディレクトリ内にペーストします。
  2. ペーストしたcom.unity.collections@0.15.0-preview.21ディレクトリ内のUnity.Collections/NativeList.csをエディタで開いてください。
  3. NativeList.csの599行目のAllocator.NoneAllocator.Invalidに変更します。

以上です!

成功

先ほどはオブジェクトがすり抜けてしまっていましたが、再度実行してみると。。

unity_physics_success 今度はオブジェクトがすり抜けませんでしたね。成功です。

おわりに

思わぬエラーに遭遇しましたが、ネットコミュニティの力をお借りして解決できました。改めて感謝申し上げます。

Unity Physicsのデモは、上に登場したHello Worldだけでなく、他にもいくつか入っています。ここでは詳細まで紹介しませんが、皆さんの方で試してみてください。

それでは素敵なDOTSライフをお過ごしください。

関連記事

に投稿

【Unity】Arduino Uno R4 Minimaとシリアル通信しようとしたらできなかった話

に投稿

【Unity】MediaPipeUnityPluginを使って超簡単に指認識をM1 Macで試す

に投稿

【Unity】M1 Macで"The Progressive CPU lightmapper is not supported on Apple silicon, switching to the Progressive GPU lightmapper."と警告が出たときの対処法

に投稿

【DOTS】Unity Physicsで大量のオブジェクトの物理演算を試す

に投稿

【Unity】Mapbox SDKでマップ上の任意の緯度経度の座標にオブジェクトを配置する

に投稿

【Unity】Mapbox Maps SDK for Unityで3D地形マップを召喚する

© 2022 はるとんのブログ