Unity 2022.3.5f1 + Oculus Integration 56.0 (OVRControllerHands)
VR/Oculus Integration 2023. 9. 25. 13:45컨트롤러를 사용해 손으로 조작 하고 싶을때
새 scene을 만들고 MainCamera를 제거 한다
OVRCameraRig 프리팹을 하이어라키에 드레그 한뒤 Tracking Origin Type을 Floor Level로 변경 한다
Hand Tracking Support 부분과 Frequency, Version을 각각 Controller And Hands, HIGH, V2로변경 한다
OVRHandPrefab을 찾아 LeftHandAnchor와 RightHandAnchor 각각 넣는다
LeftOVRHand와 RightOVRHand를 선택해 OVRHand, OVRSkeleton을 제외한 모든 컴포넌트를 제거 한다
RightOVRHand를 선택해 Hand Type을 Hand Right로 변경 한다
OVRInteraction프리팹을 찾아 OVRCameraRig에 드레그 한다
OVRControllerHands프리팹을 찾아 OVRInteraction자식으로 드레그 한다
여기 까지 하고 빌드 하면 컨트롤러를 쥐면 손이 보일것이다
Grab 오브젝트 설정하기
큐브를 하나 만들고 적당한 위치로 설정 하고 크기를 조절 한다
Rigidbody를 추가 하고 Use Gravity를 체크 해제 하고 Is Kinematic을 체크 한다
Grabbable컴포넌트를 추가 한다
HandGrabInteractable을 추가 한다
여기 까지 하면 큐브를 컨트롤러를 사요해 잡을수 있다
이벤트 수신
큐브에 PointableUnityEventWrapper 컴포넌트를 부착 한다
Pointable 필드에 Cube를 할당 한다
다음과 같이 팝업이 뜨면 Grabbable을 선택 한다
MyCube스크립트를 만들어 큐브에 부착 한다
스크립트를 열어 다음과 같이 수정 하고
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyCube : MonoBehaviour
{
[SerializeField] private Material matGreen;
[SerializeField] private Material matWhite;
private MeshRenderer meshRenderer;
void Start()
{
this.meshRenderer = this.GetComponent<MeshRenderer>();
}
public void Select()
{
this.meshRenderer.material = this.matGreen;
}
public void UnSelect()
{
this.meshRenderer.material = this.matWhite;
}
}
메터리얼도 만들어 준다
큐브의 메터리얼 필드에 넣어 주자
When Select 와 When Unselect에 + 버튼을 눌러 필드를 만들고 Cube를넣어 준다
No Function을 선택해 MyCube컴포넌트의 Select, UnSelect메서드를 선택 한다
큐브를 집으면 색이 변하는것을 확인해보자