I_Jemin

Provide static Input Getter

Remove VRInputController

VRInput provide VR input check

No more support: Overriding method for input
......@@ -3,20 +3,23 @@ using System.Collections.Generic;
using UnityEngine;
// VR 컨트롤러의 인풋을 받아 Gun 을 제어하는 스크립트
public class GunController : VRInputController {
public class GunController : MonoBehaviour {
/* VR 입력을 받아 처리해야 하는 클래스는 VRInputController 만 상속받아서 두 함수만 오버라이드 하면 된다! */
// 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown
/* VR 입력을 받아 처리해야 하는 클래스는 VRInputController 싱긑톤의 두 함수만 체크 하면 된다 */
// 단 두개의 함수 GetGripButton 와 GetTriggerButton
public Gun gun;
protected override void OnIndexTriggerButtonDown()
void Update()
{
if(VRInput.GetTriggerButton(VRInput.Hand.Right))
{
gun.Fire();
}
protected override void OnGripTriggerButtonDown()
if(VRInput.GetGripButton(VRInput.Hand.Right))
{
gun.Reload();
}
}
}
......
......@@ -2,7 +2,7 @@
using UnityEngine;
public class VREyeRaycaster : VRInputController
public class VREyeRaycaster : MonoBehaviour
{
public event Action<RaycastHit> OnRaycasthit; // This event is called every frame that the user's gaze is over a collider.
......@@ -18,16 +18,12 @@ public class VREyeRaycaster : VRInputController
private VRInteratable m_LastInteractible; //The last interactive item
override protected void Update()
void Update()
{
base.Update();
EyeRaycast();
}
override protected void OnIndexTriggerButtonDown()
{
m_CurrentInteractible.OnTriggerClick();
}
private void EyeRaycast()
{
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
// VR 컨트롤러의 입력을 GetVRTriggerButton 과 GetVRGripButton 로 제공하는 클래스
public static class VRInput {
public enum Hand {Left,Right};
// VR 컨트롤러의 인풋을 받아, 해당 함수를 발동하는 스크립트
// VR 컨트롤러에 대응해야 하는 클래스는, 이 스크립트를 상속받아서
// 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown 만 오버라이드 하면 된다.
public class VRInputController : MonoBehaviour {
/*
유니티는 OpenVR API 를 내장하고 있다.
......@@ -37,47 +39,60 @@ public class VRInputController : MonoBehaviour {
*/
//왼손
// 검지 손가락 트리거에 대응되는 입력 세팅 이름
public string indexTriggerName;
static string leftIndexTriggerName = "LeftIndexTrigger";
// 쥐는 트리거에 대응되는 입력 세팅 이름
public string gripTriggerName;
static string leftGripTriggerName = "LeftGripTrigger";
// 입력 체크..
protected virtual void Update()
{
// indexTriggerName - 검지용 트리거를 누른 순간
if(Input.GetAxisRaw(indexTriggerName) >= 0.1f)
{
// 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능
// 검지손가락 트리거용 함수 발동
OnIndexTriggerButtonDown();
Debug.Log("방아쇠를 누름");
}
// 오른손
// 검지 손가락 트리거에 대응되는 입력 세팅 이름
static string rightIndexTriggerName = "RightIndexTrigger";
// 쥐는 트리거에 대응되는 입력 세팅 이름
static string rightGripTriggerName = "RightGripTrigger";
// gripTriggerName - 쥐는 트리거를 누른 순간
if(Input.GetAxisRaw(gripTriggerName) >= 0.1f)
{
// 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능
// 쥐는 트리거용 함수 발동
OnGripTriggerButtonDown();
Debug.Log("사이드 방아쇠를 누름");
// 편의를 위해 정적 함수로 입력을 제공
public static bool GetTriggerButton(Hand hand)
{
if(hand == Hand.Right)
{
if(Input.GetAxisRaw(rightIndexTriggerName) >= 0.1f)
{
return true;
}
}
// 검지 트리거 버튼을 눌렀을때 발동될 함수 입니다.
// 이것을 상속받아 오버라이드 하세요.
protected virtual void OnIndexTriggerButtonDown()
else if(hand == Hand.Left)
{
if(Input.GetAxisRaw(leftIndexTriggerName) >= 0.1f)
{
return true;
}
}
return false;
}
// 쥐는 트리거 버튼을 눌렀을때 발동될 함수 입니다.
// 이것을 상속받아 오버라이드 하세요.
protected virtual void OnGripTriggerButtonDown()
public static bool GetGripButton(Hand hand)
{
if(hand == Hand.Right)
{
if(Input.GetAxisRaw(rightGripTriggerName) >= 0.1f)
{
return true;
}
}
else if(hand == Hand.Left)
{
if(Input.GetAxisRaw(leftGripTriggerName) >= 0.1f)
{
return true;
}
}
return false;
}
}
......
fileFormatVersion: 2
guid: 715fd8d3512a648df89f6adeca0aa407
timeCreated: 1512113025
guid: b08a39cf4ab32447e88c77e8eff973cf
timeCreated: 1512278720
licenseType: Pro
MonoImporter:
externalObjects: {}
......
......@@ -6,7 +6,7 @@ using UnityEngine;
using UnityEngine.XR;
// 현실의 디바이스를 트래킹하는 스크립트
public class VRControllerTracking : MonoBehaviour {
public class VRTrackingObject : MonoBehaviour {
// 트래킹 부위 식별자
public XRNode trackingNode;
......