Inverse3 및 VerseGrip 커서
Haply Inverse Unity Package는 Inverse3 및 VerseGrip 기기를 위한 전용 커서 컴포넌트를 제공하여, Unity 환경에서 정밀한 제어와 상호작용을 가능하게 합니다. Inverse3 의 ‘ Cursor’와 ‘VerseGrip Cursor’라는이 컴포넌트들은 해당 기기 컨트롤러의데이터를 기반으로 게임 오브젝트의 위치와 회전을 동적으로 조정하도록 설계되었습니다.
개요
커서 컴포넌트는 물리적 Haply 디바이스와 Unity의 가상 게임 오브젝트를 연결하는 가교 역할을 하며, 디바이스의 위치 및 회전 데이터를 게임 오브젝트의 움직임과 방향으로 변환합니다. 이러한 변환을 통해 사용자는 직관적인 방식으로 가상 환경과 상호작용할 수 있으며, 실제 움직임이 가상의 반응으로 그대로 반영됩니다.
CursorBase 클래스
커서 컴포넌트의 핵심은 CursorBase 클래스가 있으며, 이 클래스는 Inverse3Cursor와 VerseGripCursor가 공통으로 사용하는 기본 기능을 제공합니다.
여기에는 디바이스 연결 관리, 모델 인스턴스화, 가시성 제어가 포함됩니다.
주요 속성 및 메서드
- 장치: 커서를 제어하는 장치와 연결되며, 실행 시 자동으로 설정됩니다.
- 모델 프리팹: 커서 모델에 사용할 프리팹을 지정합니다. 이 프리팹은
ModelParent의 자식으로 자동 인스턴스화됩니다. - ModelParent: 인스턴스화된 모델 프리팹의 부모 트랜스폼을 정의합니다. 설정하지 않으면 커서의 트랜스폼이 기본값으로 사용됩니다.
- 모델: 씬에 있는 기존 커서 모델을 직접 참조합니다. 설정하면
ModelPrefab의 인스턴스화를 건너뜁니다. - HideControllerModel: 커서 모델의 표시 여부를 제어하며, 게임플레이 요구 사항에 따라 동적으로 표시하거나 숨길 수 있습니다.
- 반지름: 커서 모델이 구체인 경우 그 반지름을 나타내며, 모델의 메쉬 경계로부터 계산됩니다.
- 부드러움:
PositionSmoothness와RotationSmoothness는 커서의 위치와 회전을 부드럽게 만드는 옵션을 제공하여 사용자 경험을 향상시킵니다.
참고: 예기치 않은 동작을 방지하려면 Cursor 컴포넌트에서 Cursor Model을 올바르게 참조하는 것이 매우 중요합니다.

Haptic Rig로생성된 기본 커서 모델에는 세 축을 나타내는 색상 점이 표시됩니다: 전방(파란색), 상방(초록색), 우측(빨간색). 이 디자인은 가상 환경에서 기기의 방향을 시각적으로 파악하는 데 도움이 됩니다. 보정된 VerseGrip의 경우, 전방은가리키는 방향과 일치해야 하며, 상방은상단 면과 일치해야 합니다.
Inverse3 커서 컴포넌트
Inverse3CursorInverse3 기기에 최적화되어 있으며, Unity에서 커서의 로컬 위치를 기기의 실제 위치에 맞춰 업데이트합니다.
PositionSmoothness 설정을 통해 커서 움직임의 부드러움을 조절할 수 있으며, 실제 움직임에 대한 커서의 반응성을 제어하여 사용자 경험을 향상시킵니다.
VerseGrip 커서 컴포넌트
VerseGripCursorVerseGrip 디바이스를 통해 기능을 확장하며, Unity에서 커서의 회전 방향을 디바이스의 실제 회전 방향에 맞춰 업데이트합니다.
useDeviceLocalSpace 이 설정을 사용하면 월드 방향과 부모 오브젝트 방향 중에서 커서 정렬 방식을 선택할 수 있어 디자인의 유연성이 높아집니다.
RotationSmoothness 이 설정은 커서 회전 시의 부드러움을 조절하며, 개발자가 실제 VerseGrip 방향 변화에 대한 커서의 반응성을 세밀하게 조정할 수 있게 해줍니다.
구현 세부 사항
초기화 시 Model이것이 할당되지 않은 경우, 커서 컴포넌트는 지정된 ModelPrefab을 ModelParent의 인스턴스로 생성하여 씬에서 시각적으로 표현되도록 합니다.
이 컴포넌트들은 연결된 디바이스 컨트롤러와 동기화되어, 실제 기기의 움직임에 맞춰 커서의 위치와 회전을 실시간으로 조정합니다.
두 컴포넌트를 동일한 GameObject에 연결하여 해당 오브젝트의 위치와 회전을 제어하거나, 용도에 따라 별도의 GameObject에 연결할 수도 있습니다. 이를 통해 개발자는 Unity에서 몰입감 있는 햅틱 경험을 구현하기 위한 다목적 도구를 활용할 수 있습니다.