Locomotion validation
このモジュールは、VRSharedで利用可能なロコモーションシステムを拡張していて、ロコモーションを適用する前に検証することができます(鍵がかかった場所・収容数制限がある場所・制限エリア・パーソナルなセーフゾーンなど)。
Locomotion validation system
ユーザーが禁止区域に行かないようにするため、最初にロコモーションシステムは、HardwareRig
にあるHardwareLocomotionValidation
コンポーネントに、その位置に移動できるかどうかをCanMoveHeadset()
メソッドで問い合わせます。これに回答するため、すべてのILocomotionValidator
子オブジェクトと、ネットワーク上のローカルユーザーを表すNetworkedRig
インスタンスにあるNetworkLocomotionValidation
コンポーネントのすべてのILocomotionValidator
子オブジェクトの移動が有効化どうかを、HardwareLocomotionValidation
が最初にチェックします。
これによって、2種類の制限を与えることができます。
- オフラインデータの制限(ハードウェア情報・静的なシーンなど)
- ユーザーのネットワーク上の状態に関連した制限
その他の制限
加えて、ロコモーションシステムの使用状況により、他の要因でロコモーションが制限されます。
RigLocomotion
:ユーザーは、RigLocomotion
のレイヤーマスクのレイヤーのCollider
にのみテレポートできます(TeleportTarget
レイヤーのように)LocomotionValidatedDesktopController
デスクトップロコモーション:デスクトップビルドでは、キーボードによる移動はRigLocomotion
のテレポート制限を無視してしまうので、このコントローラーは以下をチェックして、移動後の頭の位置を正します。- 移動後に
Collider
の内側にいないか - 移動後に正しく歩行可能なナビメッシュ点上にいるか
- 移動後に
デモ
デモシーンはAssets\Photon\FusionAddons\LocomotionValidation\Demo\Scenes\LocomotionValidation.unity
にあります。
シーンには、橋で繋がったいくつかのエリアがあります。
それらは、異なるレイヤーやナビメッシュのパラメーターに設定されています。
- 緑オブジェクト:ナビゲーションは
Walkable
で、レイヤーは(RigLocomotion
のLocomotionLayerMask
パラメーターと同様に)Locomotion
に設定されているので、プレイヤーは移動したりテレポートしたりできます。 - 赤オブジェクト:ナビゲーションは
Not Walkable
で、レイヤーはForbiddenLocomotion
に設定されているので、プレイヤーは移動もテレポートもできません。 - オレンジオブジェクト:ナビゲーションは
Not Walkable
で、レイヤーは(RigLocomotion
のLocomotionLayerMask
パラメーターと同様に)Locomotion
に設定されているので、プレイヤーはその上を歩くことはできませんがテレポートは可能です。 - グレーの円柱:これは
ForbiddenZones
コンポーネント(HardwareRig
とDesktopRig
)で参照されています。ForbiddenZone
スクリプトは、ILocomotionValidator
インターフェースの実装方法を示します。この例では、(InvalidMoveCameraFader
とHardwareLocomotionValidation
スクリプトによって)フェーダーをトリガーするために、プレイヤーの頭がゾーンエリア内にある時にForbiddenZone
のCanMoveHeadset()
メソッドがfalse
を返します。
プレイヤーがオレンジオブジェクトにテレポートすると、そのエリア内でブロックされることを避けるため歩くことができるようになることに注意してください。プレイヤーが緑オブジェクトに戻った時に、Locomotion validationが再度有効になります。この動作を回避したいなら、Not Walkable
オブジェクトがForbiddenLocomotion
レイヤーにあることを確認してください。
ダウンロード
このアドオンの最新バージョンは、Industries アドオンのプロジェクトに含まれています。
対応するトポロジー
- 共有モード
更新履歴
- Version 2.0.1: Fix issue + add minimalDetectedMove parameter
- Version 2.0.0: Fusion 2.0 support
- Version 1.0.2: Improve demo scene with ForbiddenZones
- Version 1.0.1: Add demo scene + add namespace
- Version 1.0.0: First release