Unity 2022.3 & Oculus Integration URP 03 (Tutorial - Receive Basic Input from Controller)
VR/Oculus Integration 2023. 9. 20. 17:45목표
Unity 프로젝트에 OVRCameraRig를 추가
컨트롤러의 인덱스와 핸드 트리거를 통해 사용자 입력 받기
사용자가 컨트롤러의 썸스틱(왼쪽 또는 오른쪽)을 누를 때 입력 받기
사용자가 A 버튼을 놓으면 햅틱 피드백을 제공
컨트롤러(6DOF)의 위치 및 회전 정보를 수신
씬을 하나 만들고
MainCamera를 지우고 OVRCameraRig 프리팹을 찾아서 하이어라키에 놓는다
컨트롤러 입력 매핑
다음 다이어그램은 Meta Quest Touch 컨트롤러(Meta Quest 2)에 대한 일반적인 입력 매핑을 보여준다
컨트롤러를 직접 노출하는 원시 맵은 다음과 같다
참고: Secondary 오른쪽이고 Primary왼쪽 컨트롤러다
이들은 모두 Meta Quest 컨트롤러 및 게임 패드에 대한 통합 입력 시스템을 제공하는 OVRInput 클래스에서 사용할 수 있다.
자세한 내용은 OVRInput 클래스 참조를 참조하자
MyController 스크립트를 생성하고 다음과 같이 작성 한다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyController : MonoBehaviour
{
public Camera sceneCamera; //sceneCamera는 장면이 사용하는 카메라를 나타냅니다.
private Vector3 targetPosition; //targetPosition은 카메라의 위치를 나타냅니다.
private Quaternion targetRotation; //targetRotation은 카메라의 회전을 나타냅니다.
private float step; // 단계는 Cube GameObject 애니메이션에 도움이 됩니다.
void Start()
{
//처음에는 큐브 GameObject가 사용자 앞 3미터 거리에 배치됩니다.
transform.position = sceneCamera.transform.position + sceneCamera.transform.forward * 3.0f;
}
void Update()
{
step = 5.0f * Time.deltaTime;
//Receive input from right index trigger
if (OVRInput.Get(OVRInput.RawButton.RIndexTrigger))
CenterCube();
//Receive input from right index thumbstick
if (OVRInput.Get(OVRInput.RawButton.RThumbstickLeft))
transform.Rotate(0, 5.0f * step, 0);
if (OVRInput.Get(OVRInput.RawButton.RThumbstickRight))
transform.Rotate(0, -5.0f * step, 0);
//Receive input from A button and add haptic feedback
if (OVRInput.GetUp(OVRInput.Button.One))
{
OVRInput.SetControllerVibration(1, 1, OVRInput.Controller.RTouch);
}
//Receive input from left hand trigger
if (OVRInput.Get(OVRInput.Axis1D.PrimaryHandTrigger) > 0.0f)
{
transform.position = OVRInput.GetLocalControllerPosition(OVRInput.Controller.LTouch);
transform.rotation = OVRInput.GetLocalControllerRotation(OVRInput.Controller.LTouch);
}
}
//큐브를 원활하게 배치하고 회전시키는 도우미 기능 만들기
void CenterCube()
{
targetPosition = sceneCamera.transform.position + sceneCamera.transform.forward * 3.0f;
targetRotation = Quaternion.LookRotation(transform.position - sceneCamera.transform.position);
transform.position = Vector3.Lerp(transform.position, targetPosition, step);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, step);
}
}
큐브를 하나 만들고 스크립트를 부착 한다
빌드후 실행해 본다
참고 : https://developer.oculus.com/documentation/unity/unity-tutorial-basic-controller-input/
'VR > Oculus Integration' 카테고리의 다른 글
Unity 2022.3 & Oculus Integration URP 05 (Getting Started with Interaction SDK) (0) | 2023.09.21 |
---|---|
Unity 2022.3 & Oculus Integration URP 06 (그랩 상호작용) (0) | 2023.09.21 |
Unity 2022.3 & Oculus Integration URP 04 (튜토리얼 - 핸드 트래킹에서 기본 입력 수신) (0) | 2023.09.20 |
Unity 2022.3 & Oculus Integration URP 02 ( Hello World! ) (0) | 2023.09.20 |
Unity 2022.3 & Oculus Integration URP 01 (환경설정) (0) | 2023.09.20 |