ロコモーション検証
このモジュールは、VRShared に用意されているロコモーションシステムを拡張し、適用する前にいくつかのロコモーションの試行を検証します(移動が制限された場所、収容人数が限られた場所、制限区域、個人の安全ゾーンなど)。
ロコモーション検証システム
ユーザーが禁じられたゾーンに移動しようとしていないかを判断するために、すべてのロコモーションシステムは最初に HardwareRig
に配置された HardwareLocomotionValidation
コンポーネントに対して、CanMoveHeadset()
メソッドを使ってその位置に移動できるかどうかを確認します。これに対する返答として、HardwareLocomotionValidation
はまず、その移動がすべての ILocomotionValidator
子オブジェクト、およびネットワーク上のローカルユーザーを表す NetworkedRig
インスタンスに配置された NetworkLocomotionValidation
コンポーネントのすべての ILocomotionValidator
子オブジェクトによって検証されます。
これにより、以下の2種類の制限を設けることができます。
- オフラインデータに関連する制限(ハードウェア情報、静的シーンなど)
- ユーザーのネットワーク状態に関連する制限
その他の制限
さらに、ロコモーションは使用されるロコモーションシステムに応じて、以下の他の要因によって制限されます。
RigLocomotion
:ユーザーは、RigLocomotion のロコモーションレイヤーマスクに含まれるレイヤーを持つコライダー上にのみテレポートできます(例えば、TeleportTarget
レイヤー)。LocomotionValidatedDesktopController
デスクトップロコモーション:デスクトップビルドの場合、キーボードによって開始された移動はRigLocomotion
のテレポート制限を無視することができるため、このコントローラーは移動後の頭の位置が正しいかどうかを確認します。チェック項目は以下です。- 移動後にコライダーの内部に入らないこと
- 移動後に下に正しい歩行可能なナビゲーションメッシュポイントがあること
デモ
デモシーンはAssets\Photon\FusionAddons\LocomotionValidation\Demo\Scenes\LocomotionValidation.unity
にあります。
シーンには、橋でつながれた複数のエリアがあります。
これらのオブジェクトは、レイヤーとナビメッシュのパラメーターに関して異なる設定がされています。
- 緑のオブジェクト:ナビゲーションで
Walkable
に設定されており、レイヤーはLocomotion
に設定されています(これはリグのRigLocomotion
のLocomotionLayerMask
パラメーターと同じです)。したがって、プレイヤーはこれらの上を移動したりテレポートしたりできます。 - 赤のオブジェクト:ナビゲーションで
Not Walkable
に設定されており、レイヤーはForbiddenLocomotion
に設定されています。したがって、プレイヤーはこれらの上を移動したりテレポートしたりすることはできません。 - オレンジのオブジェクト:ナビゲーションで
Not Walkable
に設定されており、レイヤーはLocomotion
に設定されています(これはリグのRigLocomotion
のLocomotionLayerMask
パラメーターと同じです)。したがって、プレイヤーはこれらの上を歩くことはできませんが、テレポートすることはできます。 - グレーのシリンダー:これらは
ForbiddenZones
コンポーネント(HardwareRig
やDesktopRig
)で参照されています。ForbiddenZone
スクリプトは、ILocomotionValidator
インターフェースを実装する方法を示しています。この例では、プレイヤーの頭がゾーン内に入っているときにForbiddenZone
のCanMoveHeadset()
関数が false を返し、フェーダーをトリガーします(これはInvalidMoveCameraFader
およびHardwareLocomotionValidation
スクリプトによるものです)。
プレイヤーがオレンジのオブジェクトにテレポートすると、その上を歩くことができるため、このエリアに閉じ込められることを避けることができます。その後、ユーザーが緑のオブジェクトに戻るとロコモーション検証が再度有効化されます。この動作を避けたい場合は、Not Walkable
オブジェクトがForbiddenLocomotion
レイヤーに配置されていることを確認してください。
ダウンロード
このアドオン最新バージョンはaddon projectに含まれています。
サポートされているトポロジ
- shared mode
Changelog
- Version 1.0.2: Improve demo scene with ForbiddenZones
- Version 1.0.1: Add demo scene + add namespace
- Version 1.0.0: First release