728x90
메타 퀘스트 2 컨트롤러 입력값 세팅 및 이동
메타 퀘스트 2 입력과 관련된 정보를 확인할 수 있는 사이트이다.
필요한 함수들도 있으니 사용할 때 참고하면 되겠다.
https://docs.unity3d.com/kr/2019.2/Manual/OculusControllers.html
https://developer.oculus.com/documentation/unity/unity-ovrinput/
Combine 방식에 의한 왼손/오른손 트리거 버튼
- 장점 : 한 손만 인식 했을 때는 한 손 트리거로 인식된다.
- 단점 : 왼손/오른손을 구별해야하는 상황에서 문제가 생길 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OVR;
public class control01 : MonoBehaviour
{
//Combine방식
void Update()
{
//PrimaryIndexTrigger 왼손 트리거 버튼
if(OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger))
{
Debug.Log("왼손 트리거 버튼 클릭");
}
//SecondaryIndexTrigger 오른손 트리거 버튼
if (OVRInput.GetDown(OVRInput.Button.SecondaryIndexTrigger))
{
Debug.Log("오른손 트리거 버튼 클릭");
}
}
}
Individual 방식에 의한 왼손/오른손 트리거 버튼
왼손/오른손을 철저히 구별한다. 총을 쏠 때/선택할 때 많이 사용한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OVR;
public class Control02 : MonoBehaviour
{
//Individual 방식
void Update()
{
// PrimaryIndexTrigger 왼손 트리거 버튼
if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.LTouch))
{
Debug.Log("왼손 트리거 버튼 클릭");
}
// SecondaryIndexTrigger 오른손 트리거 버튼
if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.RTouch))
{
Debug.Log("오른손 트리거 버튼 클릭");
}
}
Individual 방식에 의한 왼손/오른손 Grip 버튼
물건을 잡거나 던지거나 할 때 많이 사용된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OVR;
public class Grip : MonoBehaviour
{
void Update()
{
if (OVRInput.GetDown(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.LTouch))
{
Debug.Log(" 왼쪽 Grip Button Down");
}
if (OVRInput.GetUp(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.RTouch))
{
Debug.Log(" 오른쪽 Grip Button Up");
}
}
}
메타 퀘스트 2 컨트롤러를 이용한 이동
CharacherController와 Thumbstick을 이용하여 컨트롤을 할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using OVR;
public class control : MonoBehaviour
{
float MovSpeed = 10f;
CharacterController cc;
void Start()
{
cc = GetComponent<CharacterController>();
}
void Update()
{
Vector2 mov2d = OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick);
Vector3 mov = new Vector3(mov2d.x * Time.deltaTime * MovSpeed, 0f, mov2d.y * Time.deltaTime * MovSpeed);
cc.Move(mov);
}
}
해당 스크립트를 Cube에 적용하고 CharacterController 컴포넌트를 추가해주면 Thumstick을 이용한 Cube의 이동기능이 가능하다. 만약 1인칭 시점에서 이동하고 싶다면 빈 오브젝트(Create Empty)를 생성하고 CharacterController 및 스크립트 연결 후 OVRCameraRig를 자식화해주면 된다.
728x90
'게임 프로그래밍 > 유니티 프로젝트' 카테고리의 다른 글
유니티 Animation를 사용하여 Fade In/Out 연출효과 구현하기 (0) | 2021.10.13 |
---|---|
유니티 Scene 상에서 Fade In&Fade Out 연출효과 구현하기(+ 메타 퀘스트 VR 환경에서 FI/FO 구현) (0) | 2021.10.13 |
유니티 오브젝트 이동 방법(Input, CharacterController, NavMeshAgent) (0) | 2021.10.08 |
유니티 Animation 기능을 사용하여 카메라 이동 구현하기 (0) | 2021.10.07 |
유니티 Animation 기능을 사용하여 시계 애니메이션 만들기 (0) | 2021.10.07 |