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