Provide static Input Getter
Remove VRInputController VRInput provide VR input check No more support: Overriding method for input
Showing
11 changed files
with
66 additions
and
52 deletions
... | @@ -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 | } | ... | ... |
File moved
... | @@ -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; | ... | ... |
-
Please register or login to post a comment