2편으로 돌아온 interaction..
다시 말하자면 (1)물에 컨트롤러를 넣고 (2)그랩을 하면 (3)물이 잡히도록 하는 상호작용을 구현해야 한다.
(1)번의 경우 1편에서 OnTriggerEnter를 사용해서 완성했기 때문에 넘어간다.
(2)번의 경우에도 1편에서 다뤘지만 Player Setting이 바뀌어서 다시 한다.
1편 보기:
[Unity] 물 속에서 grab하면 물 구체가 잡히는 interaction 구현하기 (1)
XREAL 학회에서 진행 중인 Morphai 프로젝트에서 제목의 내용의 퍼즐 구현을 맡았다. 이번에 구현하려는 interaction은 다음과 같이 개발하려고 한다. 1. 컨트롤러가 물 collider에 enter하면 물이 grab가능
gycblog.tistory.com
A. 그랩 버튼이 눌렸는지 아닌지 확인하기
1편에서는 SDK에서 제공하는 코드들을 살펴보면서 찾았는데, 생각해보니 굉장히 쉬운 방법이 있었다.
OVRInput.GetDown 함수를 사요하면 된다.
예를 들어, 왼쪽 컨트롤러의 X 버튼이 눌렸는지 확인하기 위해 OVRInput.GetDown(OVRInput.Button.Three)를 사용하면 되는 것이다. 그럼 이 함수는 X 버튼이 눌렸으면 True를 반환할 것이다.
inWater는 컨트롤러가 물 속에 있을 때 True를 반환한다. (1편 참고)
OVRInput.GetDown 함수를 이용하여 왼쪽 컨트롤러의 트리거 버튼이 눌렸을 때를 확인했다.
따라서, 컨트롤러가 물 안에 있는 상태에서 트리거 버튼을 누르면 "Grab In Water"가 출력될 것이다.
테스트 결과는 아주 잘 나왔다.
B. 물 구체가 그랩되도록 하기.
가장 큰 난관이 이것이 될 것이다.
물 속에서 트리거 버튼을 누르면
(1)물 구체가 그랩 위치로 순간이동 해야하고,
(2)물 구체를 그랩한 것이 아니어도 이미 그랩된 상태로 있어야 한다.
이건 SDK에서 제공하는 그랩 관련 코드를 공부해야 알 수 있는 범위라고 생각한다.
희소식!
혹시 그랩을 하는 순간 물 구체의 위치를 손의 위치로 바꾸면 그랩된 상태가 될까? 싶어서 해봤는데 됐다..ㅋㅋㅋ
물 구체(waterSphere)를 받아와서 손의 posiiton으로 순간이동 시켰다.
결과물:
다음에는 물 구체로 식물을 자라게 하는 상호작용이다! 다음 글에 계속..
Reference
1. https://docs.unity3d.com/560/Documentation/Manual/OculusControllers.html
'Unity > Dev' 카테고리의 다른 글
[Unity][VR] 손을 모아서 오브젝트를 만들고 키우는 스킬 (1) | 2023.05.02 |
---|---|
[Unity] 물방울을 뿌리면 식물이 자라는 interaction 구현하기 (3) (0) | 2023.01.21 |
[Unity] Light Probe로 자연스러운 빛과 실시간 그림자 연출하기 (1) | 2023.01.18 |
[Unity] UI Scripting Automation (2) (0) | 2023.01.17 |
[Unity] UI Scripting Automation (1) (0) | 2023.01.17 |