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; ...@@ -3,20 +3,23 @@ using System.Collections.Generic;
3 using UnityEngine; 3 using UnityEngine;
4 4
5 // VR 컨트롤러의 인풋을 받아 Gun 을 제어하는 스크립트 5 // VR 컨트롤러의 인풋을 받아 Gun 을 제어하는 스크립트
6 -public class GunController : VRInputController { 6 +public class GunController : MonoBehaviour {
7 7
8 - /* VR 입력을 받아 처리해야 하는 클래스는 VRInputController 만 상속받아서 두 함수만 오버라이드 하면 된다! */ 8 + /* VR 입력을 받아 처리해야 하는 클래스는 VRInputController 싱긑톤의 두 함수만 체크 하면 된다 */
9 - // 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown 9 + // 단 두개의 함수 GetGripButton 와 GetTriggerButton
10 10
11 public Gun gun; 11 public Gun gun;
12 12
13 - protected override void OnIndexTriggerButtonDown() 13 + void Update()
14 { 14 {
15 - gun.Fire(); 15 + if(VRInput.GetTriggerButton(VRInput.Hand.Right))
16 - } 16 + {
17 + gun.Fire();
18 + }
17 19
18 - protected override void OnGripTriggerButtonDown() 20 + if(VRInput.GetGripButton(VRInput.Hand.Right))
19 - { 21 + {
20 - gun.Reload(); 22 + gun.Reload();
23 + }
21 } 24 }
22 } 25 }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
2 using UnityEngine; 2 using UnityEngine;
3 3
4 4
5 -public class VREyeRaycaster : VRInputController 5 +public class VREyeRaycaster : MonoBehaviour
6 { 6 {
7 public event Action<RaycastHit> OnRaycasthit; // This event is called every frame that the user's gaze is over a collider. 7 public event Action<RaycastHit> OnRaycasthit; // This event is called every frame that the user's gaze is over a collider.
8 8
...@@ -18,16 +18,12 @@ public class VREyeRaycaster : VRInputController ...@@ -18,16 +18,12 @@ public class VREyeRaycaster : VRInputController
18 private VRInteratable m_LastInteractible; //The last interactive item 18 private VRInteratable m_LastInteractible; //The last interactive item
19 19
20 20
21 - override protected void Update() 21 + void Update()
22 { 22 {
23 - base.Update();
24 EyeRaycast(); 23 EyeRaycast();
25 } 24 }
26 25
27 - override protected void OnIndexTriggerButtonDown() 26 +
28 - {
29 - m_CurrentInteractible.OnTriggerClick();
30 - }
31 27
32 private void EyeRaycast() 28 private void EyeRaycast()
33 { 29 {
......
1 using System.Collections; 1 using System.Collections;
2 using System.Collections.Generic; 2 using System.Collections.Generic;
3 using UnityEngine; 3 using UnityEngine;
4 +using UnityEngine.XR;
5 +
6 +// VR 컨트롤러의 입력을 GetVRTriggerButton 과 GetVRGripButton 로 제공하는 클래스
7 +public static class VRInput {
8 +
9 + public enum Hand {Left,Right};
10 +
4 11
5 -// VR 컨트롤러의 인풋을 받아, 해당 함수를 발동하는 스크립트
6 -// VR 컨트롤러에 대응해야 하는 클래스는, 이 스크립트를 상속받아서
7 -// 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown 만 오버라이드 하면 된다.
8 -public class VRInputController : MonoBehaviour {
9 -
10 /* 12 /*
11 유니티는 OpenVR API 를 내장하고 있다. 13 유니티는 OpenVR API 를 내장하고 있다.
12 이것으로 VR 입력을 InputManager 에서 조이스틱 입력으로서 받을 수 있다. 14 이것으로 VR 입력을 InputManager 에서 조이스틱 입력으로서 받을 수 있다.
...@@ -37,47 +39,60 @@ public class VRInputController : MonoBehaviour { ...@@ -37,47 +39,60 @@ public class VRInputController : MonoBehaviour {
37 */ 39 */
38 40
39 41
42 + //왼손
43 + // 검지 손가락 트리거에 대응되는 입력 세팅 이름
44 + static string leftIndexTriggerName = "LeftIndexTrigger";
45 + // 쥐는 트리거에 대응되는 입력 세팅 이름
46 + static string leftGripTriggerName = "LeftGripTrigger";
47 +
48 +
49 +
50 + // 오른손
40 // 검지 손가락 트리거에 대응되는 입력 세팅 이름 51 // 검지 손가락 트리거에 대응되는 입력 세팅 이름
41 - public string indexTriggerName; 52 + static string rightIndexTriggerName = "RightIndexTrigger";
42 // 쥐는 트리거에 대응되는 입력 세팅 이름 53 // 쥐는 트리거에 대응되는 입력 세팅 이름
43 - public string gripTriggerName; 54 + static string rightGripTriggerName = "RightGripTrigger";
44 55
45 56
46 - // 입력 체크.. 57 + // 편의를 위해 정적 함수로 입력을 제공
47 - protected virtual void Update() 58 + public static bool GetTriggerButton(Hand hand)
48 { 59 {
49 - // indexTriggerName - 검지용 트리거를 누른 순간 60 + if(hand == Hand.Right)
50 - if(Input.GetAxisRaw(indexTriggerName) >= 0.1f)
51 { 61 {
52 - // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 62 + if(Input.GetAxisRaw(rightIndexTriggerName) >= 0.1f)
53 - 63 + {
54 - // 검지손가락 트리거용 함수 발동 64 + return true;
55 - OnIndexTriggerButtonDown(); 65 + }
56 - Debug.Log("방아쇠를 누름");
57 } 66 }
58 - 67 + else if(hand == Hand.Left)
59 - // gripTriggerName - 쥐는 트리거를 누른 순간
60 - if(Input.GetAxisRaw(gripTriggerName) >= 0.1f)
61 { 68 {
62 - // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 69 + if(Input.GetAxisRaw(leftIndexTriggerName) >= 0.1f)
63 - 70 + {
64 - // 쥐는 트리거용 함수 발동 71 + return true;
65 - OnGripTriggerButtonDown(); 72 + }
66 - Debug.Log("사이드 방아쇠를 누름");
67 } 73 }
68 - }
69 74
70 - // 검지 트리거 버튼을 눌렀을때 발동될 함수 입니다. 75 + return false;
71 - // 이것을 상속받아 오버라이드 하세요.
72 - protected virtual void OnIndexTriggerButtonDown()
73 - {
74 -
75 } 76 }
76 77
77 - // 쥐는 트리거 버튼을 눌렀을때 발동될 함수 입니다. 78 +
78 - // 이것을 상속받아 오버라이드 하세요. 79 + public static bool GetGripButton(Hand hand)
79 - protected virtual void OnGripTriggerButtonDown()
80 { 80 {
81 + if(hand == Hand.Right)
82 + {
83 + if(Input.GetAxisRaw(rightGripTriggerName) >= 0.1f)
84 + {
85 + return true;
86 + }
87 + }
88 + else if(hand == Hand.Left)
89 + {
90 + if(Input.GetAxisRaw(leftGripTriggerName) >= 0.1f)
91 + {
92 + return true;
93 + }
94 + }
81 95
96 + return false;
82 } 97 }
83 } 98 }
......
1 fileFormatVersion: 2 1 fileFormatVersion: 2
2 -guid: 715fd8d3512a648df89f6adeca0aa407 2 +guid: b08a39cf4ab32447e88c77e8eff973cf
3 -timeCreated: 1512113025 3 +timeCreated: 1512278720
4 licenseType: Pro 4 licenseType: Pro
5 MonoImporter: 5 MonoImporter:
6 externalObjects: {} 6 externalObjects: {}
......
...@@ -6,7 +6,7 @@ using UnityEngine; ...@@ -6,7 +6,7 @@ using UnityEngine;
6 using UnityEngine.XR; 6 using UnityEngine.XR;
7 7
8 // 현실의 디바이스를 트래킹하는 스크립트 8 // 현실의 디바이스를 트래킹하는 스크립트
9 -public class VRControllerTracking : MonoBehaviour { 9 +public class VRTrackingObject : MonoBehaviour {
10 10
11 // 트래킹 부위 식별자 11 // 트래킹 부위 식별자
12 public XRNode trackingNode; 12 public XRNode trackingNode;
......