[Unity]03.VR 시선처리 #3 - 시선으로 이동 처리하기

안녕하세요 유랑입니다.




오늘은 시선처리를 이용해 이동과 이벤트 처리를 해보겠습니다.




1. 시선 처리



1-1) 시선으로 이동 처리



플레이어 Move Type을 Look_AT으로 변경하자.

이제 바로보는 시선 방향으로 이동시켜 보겠다.






기존에 있던 MoveCtrl에 시선 이동 코드와 캐릭터컨트롤러, 카메라 트랜스폼 컴포넌트를 추가하였다.

Character Controller는 Capsule Collider를 내장하고 있으며 

Rigidbody가 없어도 물리적인 충돌 이벤트가 발생한다.











카메라가 바라보는 방향으로 이동하면 성공이다^^






1-2) 시선 처리 및 레티클 - GvrReticlePointer



VR 환경에서 특정 객체를 응시하려면 마우스 커서와 같은 조준점이 필요한데,

이런 조준점을 레티클(Reticle)이라 합니다.

레티클은 헤드 트래킹에 따라 항상 화면 중앙에 응시점이 생기며 

크기나 색상이 변해 응시하고 있다는 것을 알려줍니다.

방법은 Google VR SDK에서 제공하능 기능이나 유니티의 고유 기능을 이용해 가능합니다.

우선 Google VR SDK에서 제공하는 GvrReticlePointer 프리팹을 이용해 구현해 보겠습니다.






Transform을 꼭 초기화 시켜줍시다. 

화면에 ReticlePointer가 안보일 수 있습니다.

그리고 원하는 색상도 지정해 줍니다.





게임을 실행시키면 조그마한 점이 보이는데 이것이 Reticle Pointer입니다.

Reticle Segments의 수가 많아질수록 원에 가까워집니다.

Reticle Growth Speed는 레티클이 커지는 속도를 의미합니다.





메인카메라에 Gvr Pointer Physics Raycaster 스크립트를 추가해줍니다.

GvrReticlePointer는 단순히 시각적인 효과를 위한 것이고, 

GvrPointerPhysicsRaycaster 스크립트는 메인 카메라가 바라보는 방향으로 레이를 발사해서 

특정 객체를 선택하는 기능을 담당합니다.





레티클이 특정 객체를 인식했을 때 해당 객체에 이벤트를 전달해야 하므로 

GvrEventSystem 프리팹을 하이러키 뷰에 추가해줍니다.





이제 레티클이 나무를 응시하면 반응하도록 해당 객체에 Event Trigger 컴포넌트를 추가해줍니다.





나무를 응시하면 레티클 크기가 커지고, 응시하지 않으면 작아지는걸 확인할 수 있습니다.






1-3) 시선 처리 및 레티클 - Event Trigger 활용



새로운 스크립트를 생성후 이름을 LookItem이라고 지정한다.






이벤트를 적용할 나무 프리팹에 스크립트를 넣어주자.





이제 이벤트를 추가해 주자.

PointerEnter와 PointerExit는 응시됐을 때와 응시를끝냈을 때를 뜻한다.





Tree_3 오브젝트를 EventTrigger에 넣어주자.





플레이어가 나무를 응시하면 True값이 출력, 응시하지 않으면 False값이 출력된다.






1-4) 시선 처리 및 레티클 - 포인터 이벤트 활용



이번에는 Event Trigger 컴포넌트에 연결하지 않고 직접 이벤트를 받아오는 방식으로 구현하고,
나무를 응시하면 이동을 정지하고 다른 곳을 응시하면 다시 이동하도록 만들어 보자.
MoveCtrl 스크립트에 들어가 다음과 같이 코드를 추가하자.
isStopped를 통해서 나무응시 여부에 따라 이동유무를 설정해보았다.







이번에는 LookItem 스크립트에 다음코드를 입력하자.

IPointerEnterHandler에 빨간밑줄이 뜨는데 해당 메소드를 구현하지 않아서이다.

해당 단어 위에서 마우스 우측 버튼을 누르고 빠른 작업 및 리팩터링 => 인터페이스 구현을 선택하자.

그러면 해당 인터페이스 멤버가 구현이된다.









최종적으로 다음과 같이 코드를 작성하자.

이것도 마찬가지로 응시여부에 따라 플레이어가 이동할지에 대한 코드를 추가하는 것이다.







이제 나무를 바라보게 되면 캐릭터가 이동을 멈추게 될 것이다.






2. 마무리



오늘 강의는 여기까지입니다.

시선처리에 따른 다양한 이벤트에 대해서 배워보았습니다.

다음 시간에는 360도 영상 처리에 대해서 배워보겠습니다^^

오늘도 고생하셨습니다.

감사합니다.



수업자료: https://github.com/YouRang12/-Tistory-Unity---VR




댓글

Designed by JB FACTORY