メッシュ物理の概要
メッシュ エクスペリエンスでは、物理シミュレーションが動的コンテンツを魅力的にするための鍵となります。 Mesh 参加者に高品質の共有物理エクスペリエンスを提供し、開発者にカスタム コンテンツを作成するための生産的なワークフローを提供するために、 Mesh Physics システムを作成しました。 メッシュ物理は、ローカルの権限のあるシミュレーションに基づいており、非常に単純なアーキテクチャになります。 クライアントでサーバー側のロジックと特別なロジックは必要ありません。 最も重要なのは、このアプローチにより、待機時間の長いネットワークに接続されている場合でも、各プレイヤーが自分の環境と対話する際に、非常に応答性が高く待機時間が短いエクスペリエンスになります。
分散物理シミュレーション
メッシュ物理は、すべてのクライアントが同じシーンを共有していると仮定して、剛体の位置を同期し、すぐに動作する必要があります。 Unity のほとんどの物理機能 (たとえば、剛体、コライダー、マテリアル、制約) は、開発者の追加作業なしで同期されます。
注:
- 剛性ボディの位置と向きのみが補間と同期されます
- 不連続状態の変更 (破壊的制約など) とトリガー イベントは避ける必要があります
各クライアントは、分散シミュレーション ownershipと呼ばれる一部の本体をシミュレートする役割を担います。 プレイヤーが剛体に触れると、シミュレーションの所有権が直ちに転送され、待ち時間の短い対話が可能になります。 隣接するボディの場合、物理同期エンジンは、視覚的なアーティファクトを最小限に抑えるために、ローカル予測、補間、および自動所有権再配布を実行します。
メッシュ物理は、相互作用と、次のような追加の物理関連機能を提供します。
- 体に物理的に影響を与える様々な分野(浮力、重力)
- 個々のボディの動作を変更するための様々なコンポーネント(磁気、スティッキー、スロー可能)
- 本体をスタートアップ位置にリセットする機能 (シーンの選択的クリーンアップ)
- メッシュ エミュレーションを使用したプレイ モード 上記の機能のマルチユーザー テストのサポート
メッシュ物理機能を使用して実行できるその他の操作を次に示します。
参加者がオブジェクトをつかんで運ぶことを許可します。
重力がオブジェクトに与える影響を制御します。
オブジェクトを "スティッキー" にします。ヒットしたオブジェクトに対して固定されます。 例: 矢板に投げ矢を投げ、壁に絵を取り付ける。
物理本体と対話する自動再生アニメーションを追加します。
参加者がオブジェクトをリセットできるようにします (たとえば、チェスボードをリセットしたり、オブジェクトが散在した後に部屋をクリーンアップしたりできます)。
オブジェクトがトリガー コライダーに入ったときにイベントを発生させます。
包含フィールドを作成します。 オブジェクトはフィールドの境界内にとどまります。
オブジェクトの速度を制御します。
オブジェクトの浮力を制御します。たとえば、ボートやその他の海上オブジェクトを "浮動" にします。
オブジェクトの角速度を制御します。
爆発を作成すると、近くのオブジェクトが外側または特定の方向に移動します。
事前に定義されたベロシティで互いに跳ね返る "弾む" オブジェクトを作成します。
オブジェクトを新しい位置にテレポートし、(オプションで) 新しい回転を行います。
用語
メッシュ物理の記事全体で、"body" は "Rigidbody" の短縮形として使用されます。