Quantum 102 - シーンを設定する
概要
Quantum 102 では、物理オブジェクトを使った簡単な Quantum シーンのセットアップ方法を説明します。エンティティの概念を紹介し、Unity エディタ内からエンティティを作成する方法を学びます。
ゲームシーンを開く
Quantum SDK に同梱されている Unity プロジェクトには、ゲームを始めるのに役立つファイルがすでに含まれています。
Photon/QuantumDemo
フォルダの中に Game
と Menu
フォルダがあり、それぞれに同じような名前のシーンが含まれています。これらのシーンは、Quantum 100 シリーズの出発点として機能します。
Game
のシーンを開いてください。
このシーンには、いくつかの注目すべきGameObjectがあります。
MapData
。Quantumでシーンを作成するワークフローは、Unityで一人用ゲームのシーンを作成するのとほとんど同じです。マップデータコンポーネントは、シーンのエンティティ、スタティックコライダー、NavMeshデータをベイクし、決定論的なQuantumエンジンが使用できるようにします。EnitityViewUpdater
は、ゲームプレイコードによって作成されたエンティティ(ビュー)の GameObject 表現を、実行時にインスタンス化したり破棄したりする役割を担っています。LocalInput
スクリプトは、Unity の入力を決定論的な Quantum エンジンに渡す方法の例です。このスクリプトはこのシリーズの後半で拡張される予定です。QuantumStats
GameObject は、Game
エディタウィンドウの左側に表示される統計情報ウィンドウを表示します。これは、アクティブな Quantum シミュレーションに関する多くの有用な統計情報を表示します。
備考: 後日、EntityViewUpdaterに戻り、あなたのゲームのニーズに合わせてカスタマイズすることをお勧めします。例えば、オブジェクトプールを追加したり、必要であれば補間を変更したりします。
床とリジッドボディを追加する
シーンに床を追加するには、Unity の Hierarchy タブ上で右クリックし、Quantum > 3D > Static Box Collider
を選択します。このオブジェクトには、Quantum Static Box Collider 3D
があることに注意してください。Quantum static collider components は、Quantum マップの静的なコリジョンのジオメトリを定義します。
GameObject を Floor
にリネームして、スケールを (10, 1, 10) に変更します。Scene ビューに、ビジュアルメッシュと一致する緑色のGizmoボックスが表示されます。これは、量子スタティックコライダー(Quantum static collider)です。
次に、Quantum > 3D > Box Entity
を追加します。位置は (0, 4, 0) に、回転は (45, 0, 45) に設定します。
Rigidbodyコンポーネントを追加するには、Enity Prototype
コンポーネントのPhysicsBody3D
チェックボックスをオンにします。
プレイモードに入ります。こうすることで、静的コライダーが自動的に決定論的マップに組み込まれます。立方体のエンティティが落下して、床に着地します。
注意: Quantum シミュレーションのデータはすべて決定論的でなければなりません。そのため、Quantumで作業する場合、多くの非決定論的なUnityのデータをデータベイク処理によって決定論的な形にベイクする必要があります。ベイクされたデータはデータアセット(スクリプト可能なオブジェクトなど)に保存され、シミュレーションからアクセスされます。
Quantum のエンティティ
Quantumでは、すべてのゲームプレイはエンティティやシステム、静的コライダのような静的データアセットによって駆動されます。Quantum はレンダリングを行いませんが、EntityViewUpdater は Unity の EntityView Monobehaviour を持つ EntityPrototype を持つ各エンティティに対して GameObject をインスタンス化します。このビューGameObjectは、エンティティの視覚的な表現として機能します。また、ビューGameObjectのトランスフォームは、EntityViewUpdaterによって、それぞれのエンティティから自動的に同期さ れます。
各エンティティはコンポーネントのセットを持っています。コンポーネントはUnity MonoBehavioursではなく、EntityPrototype MonoBehavoiursのEnity Component
リストかコードによってエンティティに追加さ れます。いくつかのコンポーネントは、キューブ・エンティティの PhysicsBody3D
コンポーネントのように、Entity Prototype コンポーネントのチェックボックスをチェックすることで追加されます。
Quantumには、ランタイム中にエンティティコンポーネントの状態を検査するためのステートインスペクタがあります。Unityのメニューバーで、Window > Quantum > State Inspector
をクリックします。すると、ステートインスペクタのウィンドウが開きます。プレイモードにします。ステートインスペクタのウィンドウで、LOCALDEBUG
エントリとEntities
エントリを展開します。キューブ・エンティティが表示されます。エンティティ上のすべてのコンポーネントとその現在の状態を表示するには、それをクリックします。