로코모션 검증
이 모듈은 VRShared에서 사용할 수 있는 이동 시스템을 확장하여 적용하기 전에 이동 시도를 검증합니다(잠금 된 장소, 제한된 용량의 장소, 제한된 지역, 개인 안전 구역 등).
로코모션 검증 시스템
모든 로코모션 시스템은 사용자가 금지 구역에 가지 않으려는 것인지 확인하기 위해 먼저 HardwareRig
에 배치된 HardwareLocomotionValidation
컴포넌트를 CanMoveHeadset()
메소드로 이동할 수 있는지 묻습니다. 이에 대한 답으로 먼저 네트워크 상의 로컬 사용자를 나타내는 NetworkedRig
인스턴스 옆에 배치된 모든 NetworkLocomotionValidation
의 ILocomotionValidator
자식 및 모든 ILocomotionValidator
자식에서 이동이 유효한지 확인합니다.
이를 통해 다음과 같은 두 가지 종류의 제한을 둘 수 있습니다:
- 오프라인 데이터에 대한 제한(하드웨어 정보, 정적 씬 등)
- 사용자의 네트워크 상태와 관련된 제한
다른 제약 사항
또한, 사용된 로코모션 시스템에 따라 다른 요인에 의해 이동이 제한됩니다:
RigLocomotion
: 사용자는 RigLocomotion의 로코모션 레이어 마스크에 레이어가 있는 충돌기에서만 순간이동할 수 있습니다(TeleportTarget
레이어와 같이)LocomotionValidatedDesktopController
데스크톱 로코모션: 키보드에 의해 시작된 이동으로 인해RigLocomotion
텔레포트 제한을 무시할 수 있으므로 이 컨트롤러는 다음을 확인하여 이동 후 머리 위치가 올바른지 확인합니다:- 이동 후에 충돌기 안에 없다면
- 이동 후 올바른 보행 가능 내비게이션 메시 포인트가 그 아래에 있을 경우
데모
데모 씬은 Assets\Photon\FusionAddons\LocomotionValidation\Demo\Scenes\LocomotionValidation.unity
에 있습니다.
씬은 브릿지로 연결된 여러 영역을 포함합니다.
이러한 객체는 계층 및 navmesh 매개 변수와 관련하여 다른 구성을 가집니다:
- 녹색 객체 : Navigation에서
Walkable
로 설정, 레이어를Locomotion
으로 설정(리그RigLocomotion
LocomotionLayerMask
파라미터와 동일)으로 설정하여 플레이어들이 이동하거나 텔레포트 할 수 있도록. - 빨간색 객체 : Navigation에서
Not Walkable
로 설정, 레이어를ForbiddenLocomotion
으로 설정하여 플레이어들이 이동하거나 텔레포트 할 수 없도록. - 오렌지 객체 : Navigation에서
Not Walkable
로 설정, 레이어를Locomotion
으로 설정(리그RigLocomotion
LocomotionLayerMask
파라미터와 동일)으로 설정하여 플레이어들이 이동할 수 있으나 텔레포트 할 수 없도록. - 회색 실린더 :
ForbiddenZones
의 컴포넌트(HardwareRig
&DesktopRig
)에서 사용됩니다.ForbiddenZone
스크립트는ILocomotionValidator
인터페이스를 구현하는 방법을 보여줍니다. 이 예에서는 플레이어 머리가 존 영역에 있을 때 플레이어 머리의CanMoveHeadset()
함수가 false를 반환하여 페이더를 트리거 합니다(InvalidMoveCameraFader
&HardwareLocomotionValidation
스크립트 덕분).
사용자가 주황색 객체로 이동하는 경우 해당 영역에서 차단되지 않도록 이동 확인 기능이 다시 활성화됩니다. 이를 방지하려면 사용자가 ForbiddenLocomotion
레이어에 Not Walkable
객체가 있는지 확인하십시오.
다운로드
이 애드온의 최신 버전은 애드온 프로젝트에 포함되어 있습니다.
지원하는 토폴로지
- 공유 모드
변경 내역
- 버전 2.0.1: 문제 수정 + minimalDetectedMove 파라미터 추가
- 버전 2.0.0: Fusion 2.0 지원
- 버전 1.0.2: ForbiddenZones으로 데모 씬 개선
- 버전 1.0.1: 데모 씬 추가 + 네임스페이스 추가
- 버전 1.0.0: 최초 릴리즈