[VR,AR] 게임 개발 기초

06. Active State 사용하기

seonho01 2024. 12. 20. 11:30

Active State란? 지정된 조건을 확인하고, 참 거짓 여부에 따라 Bool값을 반환해야 할 때 사용합니다.

 

직접 예제를 통해 어떻게 사용해야 할 지 알아봅시다.

 

예제로는 오른손으로 큐브를 잡았을 때, 눈 앞의 캡슐이 초록색으로 변하는 것을 만들어보겠습니다.

 

[00. 사전준비 : 잡을 수 있는 큐브 만들기]

HelloVR 프로젝트를 열어줍니다.

 

우선, Hierarchy창에 Directional Light를 제외한 모든 오브젝트들을 제거해줍니다.

 

 

Hierarchy창의 빈 공간에 우클릭 후, Interaction SDK > Add OVR Interaction Rig를 눌러 리그를 생성해줍니다.

 

 

생성된 OVRCameraRigInteraction의 좌측 삼각형을 눌러 열어준 후, OVRCameraRig를 좌클릭 > OVR Manager > Quest Features > General > Hand Tracking Support를 Hands Only로 변경해줍니다.

 

 

다음으로 Hierarchy 빈 공간에 우클릭 > 3D Object > Cube를 눌러 큐브를 생성해줍니다.

 

 

생성된 Cube를 좌클릭 후, Inspector 창의 Transform을 다음과 같이 변경해줍니다.

(나중에 큐브가 너무 멀리 있다면, Position의 z값을 줄여줍니다.(1 -> 0.2정도로 변경))

  x y z
Position 0 1 1
Rotation 0 0 0
Scale 0.2 0.2 0.2

 

 

Hierarchy창에서 Cube를 우클릭 후 Interaction SDK > Add Grab Interaction을 눌러줍니다.

 

 

Fix All > Create를 눌러줍니다. 이제 잡을 수 있는 큐브가 완성되었습니다.

 

 

 

[01. 캡슐 생성 후 Active State 적용하기]

 

 

Hierarchy창에서 빈 공간에 우클릭 후, 3D Object > Capsule을 눌러 캡슐을 생성해줍니다.

 

 

생성된 Capsule을 좌클릭 후, Transform의 값을 다음과 같이 변경해줍니다.

  x y z
Position 0 1 8
Rotation 0 0 0
Scale 1 1 1

 

 

Capsule의 Inspector창의 아래쪽에 있는 Add Component를 누른 후,

 

Interactor Active State를 검색 > Interactor Active State 스크립트를 클릭하여 추가해줍니다.

 

 

Hierarchy 창에서, OVR CameraRigInteraction > OVRCameraRig > OVRInteractionComprehensive > OVRHands > RightHand > HandInteractorsRight > HandGrabInteractor를 Capsule의 Interactor Active State (Script) > Interactor에 드래그 앤 드롭 해줍니다.

 

Property를 Is Selecting으로 설정해줍니다.

 

 

Capsule의 Inspector 창의 Add Component를 누른 후, Active State Debug Visual을 검색하여 추가해줍니다.

(활성 상태가 되었을 때, 캡슐의 색상을 변경하기 위한 스크립트 입니다.)

 

Active State Debug Visual>Active State에 Interactor Active State를 드래그 앤 드롭 해줍니다.

 

 

Target에도 Capsule을 드래그 앤 드롭 하여 캡슐의 메쉬 랜더러를 적용해줍니다.

 

 

빌드하여 결과를 확인해봅니다.

 

 

오른손으로 큐브를 잡을 때, 캡슐의 색깔이 초록색으로 바뀌는 것을 확인할 수 있습니다.

 

이번에는 오른손 뿐만 아니라 왼손도 추가하고, 양손의 활성상태도 추가해보겠습니다.

 

[02. 여러 요소의 상태 확인하기]

 

다시 Hierarchy창에서 Capsule을 선택한 후, Inspector창의 Add Component를 눌러, Interactor Active State를 하나 더 추가해줍니다.

 

 

Hierarchy창의 OVRCameraRigInteraction>OVRCameraRig>OVRInteractionComprehensive>OVRHands>LeftHand>HandInteractorsLeft>HandGrabInteractor를 새로 만든 Interactor Active State>Interactor에 드래그 앤 드롭 해주고, 아래쪽 Property를 Is Selecting으로 설정해줍니다.

 

Add Component를 눌러서 Active State Group을 검색하여 추가해줍니다.

 

 

Active State Group의 Active States를 2로 설정해준 다음, 두개의 Interactor Active State를 각각 드래그 앤 드롭 해줍니다.

이후, Logic Operator를 OR로 설정하여, 오른손 또는 왼손으로 무언가를 잡을 때, true를 반환하도록 설정해줍니다.

 

 

Active State Debug Visual의 Active State에 Active State Group를 드래그 앤 드롭하여 변경해줍니다.

 

 

빌드를 눌러 결과를 확인해줍니다.