Add VRInputController
VRInputController
- Object can handle VRInput by inheritting VRInputController class
- Provide virtual method
- OnGripTriggerButtonDown
- OnIndexTriggerButtonDown
- These method automatically called
GunController
- Refactoring: Hard link with VRInput removed
- Inherit VRInputController
Camera
- Fix: decrease near plane distance
Showing
6 changed files
with
108 additions
and
56 deletions
| ... | @@ -337,6 +337,11 @@ Prefab: | ... | @@ -337,6 +337,11 @@ Prefab: |
| 337 | propertyPath: m_RootOrder | 337 | propertyPath: m_RootOrder |
| 338 | value: 3 | 338 | value: 3 |
| 339 | objectReference: {fileID: 0} | 339 | objectReference: {fileID: 0} |
| 340 | + - target: {fileID: 20442921188006278, guid: b669759df7f1742f6b6a749f45824763, | ||
| 341 | + type: 2} | ||
| 342 | + propertyPath: near clip plane | ||
| 343 | + value: 0.01 | ||
| 344 | + objectReference: {fileID: 0} | ||
| 340 | m_RemovedComponents: [] | 345 | m_RemovedComponents: [] |
| 341 | m_ParentPrefab: {fileID: 100100000, guid: b669759df7f1742f6b6a749f45824763, type: 2} | 346 | m_ParentPrefab: {fileID: 100100000, guid: b669759df7f1742f6b6a749f45824763, type: 2} |
| 342 | m_IsPrefabParent: 0 | 347 | m_IsPrefabParent: 0 | ... | ... |
| ... | @@ -6,7 +6,7 @@ Material: | ... | @@ -6,7 +6,7 @@ Material: |
| 6 | m_ObjectHideFlags: 0 | 6 | m_ObjectHideFlags: 0 |
| 7 | m_PrefabParentObject: {fileID: 0} | 7 | m_PrefabParentObject: {fileID: 0} |
| 8 | m_PrefabInternal: {fileID: 0} | 8 | m_PrefabInternal: {fileID: 0} |
| 9 | - m_Name: Red | 9 | + m_Name: RED |
| 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} | 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} |
| 11 | m_ShaderKeywords: | 11 | m_ShaderKeywords: |
| 12 | m_LightmapFlags: 4 | 12 | m_LightmapFlags: 4 | ... | ... |
| ... | @@ -3,69 +3,20 @@ using System.Collections.Generic; | ... | @@ -3,69 +3,20 @@ using System.Collections.Generic; |
| 3 | using UnityEngine; | 3 | using UnityEngine; |
| 4 | 4 | ||
| 5 | // VR 컨트롤러의 인풋을 받아 Gun 을 제어하는 스크립트 | 5 | // VR 컨트롤러의 인풋을 받아 Gun 을 제어하는 스크립트 |
| 6 | -// 범용적으로 사용가능하므로 적절히 수정해서 쓰면 된다. | 6 | +public class GunController : VRInputController { |
| 7 | -public class GunController : MonoBehaviour { | ||
| 8 | 7 | ||
| 9 | - /* | 8 | + /* VR 입력을 받아 처리해야 하는 클래스는 VRInputController 만 상속받아서 두 함수만 오버라이드 하면 된다! */ |
| 10 | - 유니티는 OpenVR API 를 내장하고 있다. | 9 | + // 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown |
| 11 | - 이것으로 VR 입력을 InputManager 에서 조이스틱 입력으로서 받을 수 있다. | ||
| 12 | 10 | ||
| 13 | - 1. VR 인풋 테이블 참고하기. | ||
| 14 | - | ||
| 15 | - VR 인풋 테이블을 참고하기 위해 링크로 이동한다. (https://docs.unity3d.com/Manual/OpenVRControllers.html) InputManager 에서 어떤 조이스틱 입력 번호가 VR 컨트롤러의 버튼에 대응된느지 체크할 수 있다. | ||
| 16 | - | ||
| 17 | - 2. InputManager 에서 VR 용 입력 설정을 만든다. | ||
| 18 | - Project Settings > InputManager 로 이동한다. | ||
| 19 | - | ||
| 20 | - (미리 만들어진 InputManager 값들을 확인 가능하다.) | ||
| 21 | - | ||
| 22 | - 이름은 마음대로 지정가능하다. 이 예제의 경우 HTC Vive 컨트롤러의 왼쪽 검지 방아쇠(트리거) 버튼과 Oculus Rift 터치 컨트롤러의 왼쪽 검지 방아쇠(트리거) 버튼에 연동되는 입력 세팅 이름을 "LeftIndexTrigger" 로 지었다. | ||
| 23 | - | ||
| 24 | - 인풋 테이블에서 Vive 왼손 검지 방아쇠와 Ocluls Rift 왼손 검지 방아쇠는 Joystick 9 th Axis 로 표시되어있다. | ||
| 25 | - | ||
| 26 | - 따라서 LeftIndexTrigger 에 대응되는 조이스틱 Axis 는 9 th Axis 로 지정되어 있다. | ||
| 27 | - | ||
| 28 | - 위의 내용은 미리 세팅된 값에서 확인 가능하다. | ||
| 29 | - | ||
| 30 | - 2. 일반 게임에서 사용하듯이 Input.GetAxis 를 사용하면 된다. | ||
| 31 | - | ||
| 32 | - 0.1f(10%) 이상 트리거가 눌려질시 해당 버튼을 누른것으로 보았다. | ||
| 33 | - | ||
| 34 | - GetAxis 는 입력값을 부드럽게 꺾어준다. 별 상관은 없지만 입력을 즉시 받기 위해, 보간이 없는 GetAxisRaw 를 사용했다. | ||
| 35 | - | ||
| 36 | - */ | ||
| 37 | - | ||
| 38 | - | ||
| 39 | - // 검지 손가락 트리거에 대응되는 입력 세팅 이름 | ||
| 40 | - public string indexTriggerName; | ||
| 41 | - // 쥐는 트리거에 대응되는 입력 세팅 이름 | ||
| 42 | - public string gripTriggerName; | ||
| 43 | - | ||
| 44 | - // 제어할 총 | ||
| 45 | - // 여기 Gun 를 원하는 타입으로 교체하면 다른 게임에 적용 가능 | ||
| 46 | public Gun gun; | 11 | public Gun gun; |
| 47 | 12 | ||
| 48 | - // 입력 체크.. | 13 | + public override void OnIndexTriggerButtonDown() |
| 49 | - void Update() | ||
| 50 | { | 14 | { |
| 51 | - // indexTriggerName - 검지용 트리거를 누른 순간 | ||
| 52 | - if(Input.GetAxisRaw(indexTriggerName) >= 0.1f) | ||
| 53 | - { | ||
| 54 | - // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 | ||
| 55 | - | ||
| 56 | - // 총을 쏜다. | ||
| 57 | gun.Fire(); | 15 | gun.Fire(); |
| 58 | - Debug.Log("방아쇠를 누름"); | ||
| 59 | } | 16 | } |
| 60 | 17 | ||
| 61 | - // gripTriggerName - 쥐는 트리거를 누른 순간 | 18 | + public override void OnGripTriggerButtonDown() |
| 62 | - if(Input.GetAxisRaw(gripTriggerName) >= 0.1f) | ||
| 63 | { | 19 | { |
| 64 | - // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 | ||
| 65 | - | ||
| 66 | - // 총을 재장전 한다. | ||
| 67 | gun.Reload(); | 20 | gun.Reload(); |
| 68 | - Debug.Log("사이드 방아쇠를 누름"); | ||
| 69 | - } | ||
| 70 | } | 21 | } |
| 71 | } | 22 | } | ... | ... |
Assets/Scripts/VRInputController.cs
0 → 100644
| 1 | +using System.Collections; | ||
| 2 | +using System.Collections.Generic; | ||
| 3 | +using UnityEngine; | ||
| 4 | + | ||
| 5 | +// VR 컨트롤러의 인풋을 받아, 해당 함수를 발동하는 스크립트 | ||
| 6 | +// VR 컨트롤러에 대응해야 하는 클래스는, 이 스크립트를 상속받아서 | ||
| 7 | +// 단 두개의 함수 OnGripTriggerButtonDown 와 OnIndexTriggerButtonDown 만 오버라이드 하면 된다. | ||
| 8 | +public class VRInputController : MonoBehaviour { | ||
| 9 | + | ||
| 10 | + /* | ||
| 11 | + 유니티는 OpenVR API 를 내장하고 있다. | ||
| 12 | + 이것으로 VR 입력을 InputManager 에서 조이스틱 입력으로서 받을 수 있다. | ||
| 13 | + | ||
| 14 | + 1. VR 인풋 테이블 참고하기. | ||
| 15 | + | ||
| 16 | + VR 인풋 테이블을 참고하기 위해 링크로 이동한다. (https://docs.unity3d.com/Manual/OpenVRControllers.html) InputManager 에서 어떤 조이스틱 입력 번호가 VR 컨트롤러의 버튼에 대응된느지 체크할 수 있다. | ||
| 17 | + | ||
| 18 | + 2. InputManager 에서 VR 용 입력 설정을 만든다. | ||
| 19 | + Project Settings > InputManager 로 이동한다. | ||
| 20 | + | ||
| 21 | + (미리 만들어진 InputManager 값들을 확인 가능하다.) | ||
| 22 | + | ||
| 23 | + 이름은 마음대로 지정가능하다. 이 예제의 경우 HTC Vive 컨트롤러의 왼쪽 검지 방아쇠(트리거) 버튼과 Oculus Rift 터치 컨트롤러의 왼쪽 검지 방아쇠(트리거) 버튼에 연동되는 입력 세팅 이름을 "LeftIndexTrigger" 로 지었다. | ||
| 24 | + | ||
| 25 | + 인풋 테이블에서 Vive 왼손 검지 방아쇠와 Ocluls Rift 왼손 검지 방아쇠는 Joystick 9 th Axis 로 표시되어있다. | ||
| 26 | + | ||
| 27 | + 따라서 LeftIndexTrigger 에 대응되는 조이스틱 Axis 는 9 th Axis 로 지정되어 있다. | ||
| 28 | + | ||
| 29 | + 위의 내용은 미리 세팅된 값에서 확인 가능하다. | ||
| 30 | + | ||
| 31 | + 2. 일반 게임에서 사용하듯이 Input.GetAxis 를 사용하면 된다. | ||
| 32 | + | ||
| 33 | + 0.1f(10%) 이상 트리거가 눌려질시 해당 버튼을 누른것으로 보았다. | ||
| 34 | + | ||
| 35 | + GetAxis 는 입력값을 부드럽게 꺾어준다. 별 상관은 없지만 입력을 즉시 받기 위해, 보간이 없는 GetAxisRaw 를 사용했다. | ||
| 36 | + | ||
| 37 | + */ | ||
| 38 | + | ||
| 39 | + | ||
| 40 | + // 검지 손가락 트리거에 대응되는 입력 세팅 이름 | ||
| 41 | + public string indexTriggerName; | ||
| 42 | + // 쥐는 트리거에 대응되는 입력 세팅 이름 | ||
| 43 | + public string gripTriggerName; | ||
| 44 | + | ||
| 45 | + | ||
| 46 | + // 입력 체크.. | ||
| 47 | + void Update() | ||
| 48 | + { | ||
| 49 | + // indexTriggerName - 검지용 트리거를 누른 순간 | ||
| 50 | + if(Input.GetAxisRaw(indexTriggerName) >= 0.1f) | ||
| 51 | + { | ||
| 52 | + // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 | ||
| 53 | + | ||
| 54 | + // 검지손가락 트리거용 함수 발동 | ||
| 55 | + OnIndexTriggerButtonDown(); | ||
| 56 | + Debug.Log("방아쇠를 누름"); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + // gripTriggerName - 쥐는 트리거를 누른 순간 | ||
| 60 | + if(Input.GetAxisRaw(gripTriggerName) >= 0.1f) | ||
| 61 | + { | ||
| 62 | + // 여기 내용을 원하는 처리로 교체하면 다른 게임에 적용 가능 | ||
| 63 | + | ||
| 64 | + // 쥐는 트리거용 함수 발동 | ||
| 65 | + OnGripTriggerButtonDown(); | ||
| 66 | + Debug.Log("사이드 방아쇠를 누름"); | ||
| 67 | + } | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + // 검지 트리거 버튼을 눌렀을때 발동될 함수 입니다. | ||
| 71 | + // 이것을 상속받아 오버라이드 하세요. | ||
| 72 | + public virtual void OnIndexTriggerButtonDown() | ||
| 73 | + { | ||
| 74 | + | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + // 쥐는 트리거 버튼을 눌렀을때 발동될 함수 입니다. | ||
| 78 | + // 이것을 상속받아 오버라이드 하세요. | ||
| 79 | + public virtual void OnGripTriggerButtonDown() | ||
| 80 | + { | ||
| 81 | + | ||
| 82 | + } | ||
| 83 | +} |
Assets/Scripts/VRInputController.cs.meta
0 → 100644
| 1 | +fileFormatVersion: 2 | ||
| 2 | +guid: 715fd8d3512a648df89f6adeca0aa407 | ||
| 3 | +timeCreated: 1512113025 | ||
| 4 | +licenseType: Pro | ||
| 5 | +MonoImporter: | ||
| 6 | + externalObjects: {} | ||
| 7 | + serializedVersion: 2 | ||
| 8 | + defaultReferences: [] | ||
| 9 | + executionOrder: 0 | ||
| 10 | + icon: {instanceID: 0} | ||
| 11 | + userData: | ||
| 12 | + assetBundleName: | ||
| 13 | + assetBundleVariant: |
-
Please register or login to post a comment