미디어 콘텐츠 스터디

Part06. 문(Door), 서랍(Drawer), 레버(Lever) 조작 본문

가상현실(Virtual Reality)/가상현실 기초 다루기

Part06. 문(Door), 서랍(Drawer), 레버(Lever) 조작

danmujicat 2022. 8. 9. 18:37

1. 문 열고 닫기

1.1 문 잡기 설정하기

Cabinet.prefab
0.04MB

 

ⓛ Cabinet 프리팹 임포트하여 하이러키 창에 추가하고 Transform 컴포넌트를 재설정한다.
         Position(-0.161, 0, -1.18)
         Rotation(0, -180, 0)

② 하이러키 창의 Cabinet하위의 Door를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 Rigidbody, XR Grab Interactable 컴포넌트 추가한다.
③ 하이러키 창의 Cabinet하위의 Door를 선택하고 인스펙터 창에 XR Grab Interactable에서 Movement Type을 Kinematic 설정한다.
④ 하이러키 창의 Cabinet하위의 Door를 선택하고 인스펙터 창에 XR Grab Interactable 컴포넌트에서 Colliders 속성에 1을 입력한 후   Element0에 하이러키 창의 Cabinet->Door->Door handle을 드래그앤 드롭하여 설정한다.

④ 실행하기

1.2 문 손잡이 잡기 설정하기 

ⓛ 인스펙터 창에 Layer->Add Layer 선택하여 Grab Ignore Ray 추가한다.
     Layer-> Add Layer 선택하여 Body도 추가되어 있어야 함
 하이러키창에 Door 선택하여 인스펙터 창에서 Layer에 Grab Ignore Ray 설정한다.
③하이러키창에 Drawer선택하여 인스펙터 창에서 Layer에 Grab Ignore Ray 설정한다.
④ Edit | Project Settings 메뉴를 선택하여 Physics 항목을 선택하고  Body와 Grab Ignore Ray 서로 언체크한다.

1.3 문 열기 범위 설정하기 

ⓛ 하이러키창에 Door 선택하고 인스펙터 창에서 XR Grab Interactable의 Movement Type을 Velocity Tracking으로 변경한다.
② 하이러키창에 Door선택하고 인스펙터 창에서 [Add Component]클릭하여 Hinge Joint 컴포넌트 추가한다.
③ Hinge Joint 컴포넌트의 Edit Angular Limits   버튼을 클릭한다. 

④ Use Limits 체크하고 씬 창에서 문을 열릴 만큼 드래그한다.

⑤ 실행하기

1.4 문 열기 범위 자동 제한하기

 하이러키창에 Door 선택하고 Hinge Joint 컴포넌트의 Use Spring 체크한다.
② Spring -> Damper를  1로 설정한다.

③ 실행하기(문이 활짝 열리지 않고  열리기 제한됨)

2. 서랍 열고 닫기

2.1 수동적 열고 닫기

ⓛ 하이러키 창에서 Cabinet->Drawer를 선택하고 인스펙터 창에서 [Add Component ]버튼을 클릭하여 Rigidbody, XR Grab Interactable 컴포넌트 추가한다.
하이러키 창에서 Cabinet-> Drawer를 선택하고 인스펙터 창에서 Layer에 Grab Ignore Ray 설정되어 있는지 확인한다.
하이러키 창에서 Cabinet-> Drawer를 선택하고 인스펙터 창에서 XR Grab Interactable컴포넌트의InteractionLayer Mask을 Everything 설정한다.
하이러키 창에서 Cabinet-> Drawer를 선택하고 인스펙터 창에서 XR Grab Interactable 컴폰넌트의 Movement Type을 Velocity Tracking 설정한다.
⑤ 하이러키 창에서 Cabinet-> Drawer 를 선택하고 인스펙터 창에서 XR Grab Interactable 컴포넌트의 Colliders 속성에 1을 입력한 후    Element0에 하이러키 창의 Cabinet-> Drawer 을 드래그앤 드롭하여 설정한다.

⑥ 하이러키 창에서 Cabinet->Drawer를 선택하고 인스펙터 창에서 [Add Component]버튼을 클릭하여 Configurable Joint컴포넌트 추가한다.
Configurable Joint의  속성을 다음과 같이 설정한다.
          Axis(0,0,-1)
         X Motion : limited,                       Y Motion : Locked ,                      Z Motion : Locked
         Angular X Motion : Locked,          Angular Y Motion : Locked,         Angular Z Motion : Locked
         Linear Limit -> Limit : 0.4 ,           X Drive -> Position  Damper : 2

 

⑦ 실행하기

2.2 부드럽게 닫히기

 하이러키 창의 Cabinet->Drawer를 선택하고 인스펙터 창에 XR Grab Interactable 컴포넌트에 Attach Transform에 Cabinet->Drawer를 드래그앤드롭 설정하기

② 실행하기

3. 레버 밀고 당기기

3.1 레버 만들기

 GameObject | 3D Object |Cube 메뉴 선택하여 하이러키 창에 Cube 추가하고 이름을 Lever로 변경, Transform 재설정한다.
     Position(-0.407, 1.188, -0.934)
     Scale(0.032, 0.31, 0.032)
② GameObject | 3D Object | Cube 메뉴 선택하여 하이러키 창에 Lever하위에 Cube 추가, Transform 재설정한다.
     Position(0, 0.607,0)
     Scale(1.47, 0.24, 1.47)

3.2 레버 잡기

ⓛ 하이러키 창에서 Lever를 선택하고 인스펙터 창에서 [Add Component]버튼을 클릭하여 Rigidbody, XR Grab Interactable 컴포넌트 추가한다.
② 하이러키창에서 Lever 선택하여 인스펙터 창에서 Layer의 Grab Ignore Ray 설정한다.

③ 하이러키 창의 Lever를 선택하고 인스펙터 창에서 XR Grab Interactable 컴포넌트의 Colliders 속성에 1을 입력한 후
   Element0에 하이러키 창의 Lever->Cube을 드래그앤 드롭하여 설정한다.

3.3 레버 움직임 범위 설정하기

ⓛ하이러키 창의 Lever를 선택하고  인스펙터 창에서 XR Grab Interactable 컴포넌트의 Movement Type을 Velocity Tracking 설정한다.
② 하이러키 창의 Lever를 선택하고 인스펙터 창에 [Add Component] 버튼을 클릭하여 Hinge Joint 추가하고 Hinge Joint 컴포넌트의 Edit Angular Limits  버튼을 클릭하고 Achor (0, -0.43, 0)  Axiz(0,0,1) 설정한다.
③ Use Limits 체크하고 씬창에서 Lever을 열릴 만큼 드래그한다.


④ 인스펙터 창에서 Hinge Joint 컴포넌트의 Use Spring 체크, Spring -> Damper를  2로 설정한다.

⑤ 실행하기
Rigidbody에 Use Gravity 언체크 => 레버가 움직이면 제자리로 돌아가지 않고 움직임 만큼 고정

 

Comments