Showing
12 changed files
with
143 additions
and
7 deletions
File moved
Assets/Scripts/GunScript.meta
0 → 100644
1 | -# Unity-OpenVR-Shooter-VR-Example | 1 | +![대문](https://imgur.com/wocxoKL.png) |
2 | -Easy to use VR Shooter template for Unity OpenVR Input System. Works for Oculus Rift and Vive. | ||
3 | - | ||
4 | -# Credit | ||
5 | -I_Jemin (i_jemin@hotmail.com, ijemin.com) | ||
6 | 2 | ||
7 | 3 | ||
8 | -# 유니티 OpenVR VR 총 사격 (VR 슈터) 구현 예제 | 4 | +# Unity-OpenVR-Shooter-Template<br>유니티 OpenVR 슈터 템플릿 |
9 | 사용하기 쉽게 템플릿화 되어 완성된 유니티 VR 슈터 게임 제작 템플릿입니다. | 5 | 사용하기 쉽게 템플릿화 되어 완성된 유니티 VR 슈터 게임 제작 템플릿입니다. |
10 | 6 | ||
7 | +Oculus VR 과 HTC Vive (Steam VR) 에 모두 대응합니다. | ||
8 | + | ||
9 | +총 모듈만 따로 때어 FPS 게임을 제작할때 사용할 수 있습니다. | ||
10 | + | ||
11 | 상세한 설명 주석 달아놨음. | 11 | 상세한 설명 주석 달아놨음. |
12 | -이것 기반으로 만듬 https://github.com/IJEMIN/Unity-OpenVR-Power-Blade-Example | 12 | +이것 기반으로 만듬<br>https://github.com/IJEMIN/Unity-OpenVR-Power-Blade-Example |
13 | + | ||
14 | +## 제공하는 기능 | ||
15 | +코드 동작이 내부에서 간결하게 완결되어 있어, 드래그-드롭으로 쓸 수 있습니다. | ||
16 | + | ||
17 | +### VR 트래킹 기능 | ||
18 | +- 현실 부위 1:1 트래킹 | ||
19 | +- VR 컨트롤러 입력 대응 함수 제공 | ||
20 | +- 스테이셔너리 자동 키 설정 | ||
21 | +- 간결한 코드와 높은 확장성 | ||
22 | + | ||
23 | +### 건 슈터 (FPS Shooter) 기능 | ||
24 | +- 단발/연사 | ||
25 | +- 피탄 이펙트 | ||
26 | +- 발사 이펙트 | ||
27 | +- 재장전 | ||
28 | +- 증강현실 탄약 UI | ||
29 | +- 간결한 외부 함수 | ||
30 | + - Gun.Reload - 장전 | ||
31 | + - Gun.Fire - 발사 | ||
32 | + | ||
33 | +## 동작과 사용 방법 | ||
34 | +미리 만들어진 예제 씬을 참고하면 좋습니다. | ||
35 | + | ||
36 | +### 프리팹 Prefab | ||
37 | + | ||
38 | +미리 만들어진 예제 프리팹을 제공합니다. | ||
39 | +- VR Player: VR 카메라와 왼손과 오른손 트래킹, (사람) 키 대응이 미리 완성되어 있는 프리팹입니다. | ||
40 | +- Gun: 사격할수 있는, 미리 완성된 총 입니다. | ||
41 | +- Cube: Gun 에 의해 데미지를 받아 파괴될 수 있는 큐브 입니다. | ||
42 | + | ||
43 | +### VR 컨트롤러 트래킹 | ||
44 | +![트래킹1](https://imgur.com/NKPpcAc.png) | ||
45 | +어떤 오브젝트든 VRControllerTracking 만 붙여주면, 현실의 VR 컨트롤러와 위치와 동기화됩니다. | ||
46 | + | ||
47 | +![트래킹1](https://imgur.com/jgH8PFD.png) | ||
48 | +부착한 다음, 원하는 추적 부위를 지정해주세요. | ||
49 | + | ||
50 | +위치와 회전 동기화는 로컬 좌표계를 기준으로 합니다. | ||
51 | + | ||
52 | + | ||
53 | +### VR 컨트롤러 입력 감지 | ||
54 | + | ||
55 | +어떤 스크립트든 VRInputController 를 상속하면, VR 컨트롤러의 입력을 받을 수 있습니다. | ||
56 | + | ||
57 | +두가지 오버라이드 가능한 함수를 제공합니다. 이들은 VR 컨트롤러 입력이 감지되면 자동으로 호출됩니다. | ||
58 | +- void OnIndexTriggerButton() - VR 컨트롤러 검지 방아쇠를 누르는 동안 발동 | ||
59 | +- void OnGripTriggerButton() - VR 컨트롤러 쥐는 방아쇠를 누르는 동안 발동 | ||
60 | + | ||
61 | +1. VRInputController 스크립트를 상속받습니다. | ||
62 | +2. 원하는 입력에 따라 위의 함수 중 하나를 오버라이드 합니다. | ||
63 | +3. 함수 내부에 입력에 대응할 동작을 구현합니다. | ||
64 | + | ||
65 | +#### VR 입력 대응 예시 코드 | ||
66 | + | ||
67 | +예제의 GunController 스크립트는 VR 입력에 따라 Gun 을 제어하는 스크립트 입니다. | ||
68 | +별다른 코드 없이, OnIndexTriggerButton 와 OnGripTriggerButton 를 오버라이드 하여 입력에 대응하고 있습니다. | ||
69 | + | ||
70 | + | ||
71 | +~~~ | ||
72 | +public class GunController : VRInputController { | ||
73 | + | ||
74 | + public Gun gun; | ||
75 | + | ||
76 | + public override void OnIndexTriggerButtonDown() | ||
77 | + { | ||
78 | + gun.Fire(); | ||
79 | + } | ||
80 | + | ||
81 | + public override void OnGripTriggerButtonDown() | ||
82 | + { | ||
83 | + gun.Reload(); | ||
84 | + } | ||
85 | +} | ||
86 | +~~~ | ||
87 | + | ||
88 | +### 건 슈터 Gun Shooter | ||
89 | +캡슐화 되어있습니다. 그냥 프리팹을 가져다 쓰면 됩니다. | ||
90 | +![총프리팹](https://imgur.com/T9ZJiT3.png) | ||
91 | +외부 함수로 Gun.Fire 와 Gun.Reload 를 제공하여, 총을 쏘고 재장전 할 수 있습니다. | ||
92 | + | ||
93 | +### 총알 데미지 처리 | ||
94 | +IDamageable 인터페이스를 상속받는 오브젝트는 총에 의해 데미지를 입을 수 있습니다. | ||
95 | + | ||
96 | +예시 코드 | ||
97 | +~~~ | ||
98 | + | ||
99 | +public class HitCube : MonoBehaviour,IDamageable { | ||
100 | + public float hp = 100f; | ||
101 | + public void OnDamage(float damage) | ||
102 | + { | ||
103 | + Debug.Log("큐브가 맞았다!"); | ||
104 | + hp -= damage; | ||
105 | + | ||
106 | + if(hp <= 0) | ||
107 | + { | ||
108 | + Destroy(gameObject); | ||
109 | + } | ||
110 | + } | ||
111 | +} | ||
112 | +~~~ | ||
113 | + | ||
114 | +### 이외의 기능들 ### | ||
115 | + | ||
116 | +작성중 | ||
117 | + | ||
118 | +## 기타 ## | ||
119 | + | ||
120 | +### VR 컨트롤러 입력 설정 | ||
121 | + | ||
122 | +VR 컨트롤러의 입력을 InputManager 에서 제어하는 방법은 VRInputController 와 https://github.com/IJEMIN/Unity-OpenVR-Power-Blade-Example 의 Readme 문서를 참고. | ||
123 | + | ||
13 | 124 | ||
14 | 125 | ||
15 | # 궁금한 점은 이곳으로. | 126 | # 궁금한 점은 이곳으로. |
16 | I_Jemin (i_jemin@hotmail.com, ijemin.com) | 127 | I_Jemin (i_jemin@hotmail.com, ijemin.com) |
128 | + | ||
129 | + | ||
130 | + | ||
131 | + | ||
132 | + | ||
133 | + | ||
134 | + | ||
135 | + | ||
136 | +# Unity-OpenVR-Shooter-Template | ||
137 | +Easy to use VR Shooter template for Unity OpenVR Input System. Works for Oculus Rift and Vive. | ||
138 | + | ||
139 | +Only use Unity built-in VR codes. | ||
140 | + | ||
141 | +# Credit | ||
142 | +I_Jemin (i_jemin@hotmail.com, ijemin.com) | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment