[Unity]20.오큘러스 퀘스트 응용 슈팅게임 #3 - 텍스트 문구와 진동
- 게임 개발 - Unity3d
- 2019. 9. 11. 19:13
안녕하세요 유랑입니다.
지난 시간에 이어서 오큘러스 퀘스트를 이용한 슈팅게임을 만들어 보겠습니다.
텍스트 문구, 사운드, 진동 효과에 대해 알아볼게요^^
1. 텍스트 문구와 진동
1-1) 텍스트 문구 - ㉠Canvas
총을 쏠 때 총알의 갯수가 보이면 좋겠죠?
텍스트 문구를 추가해줄 차례입니다.
Canvas를 이용할게요.
Render Mode는 꼭 World Space로 설정해 주셔야.
해당 위치에 고정이 됩니다!!!
1-2) 텍스트 문구 - ㉡Text
Canvas 밑으로 텍스트도 추가해 주세요.
렉트 트랜스폼을 캔버스 크기에 맞게 늘려주시고,
폰트와 글자 크기도 조정해 주세요~~~
만들어진 텍스트 문구 오브젝트는 총 밑으로 넣어주겠습니다.
총을 잡았을 때 총알의 갯수를 보여줄 스크립트를 추가해 주겠습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ShootIfGrabbed : MonoBehaviour { private SimpleShoot simpleShoot; private OVRGrabbable ovrGrabbable; public OVRInput.Button shootingButton; public int maxNumberOfBullets = 10; public Text bulletText; // Start is called before the first frame update void Start() { simpleShoot = GetComponent(); ovrGrabbable = GetComponent (); bulletText.text = maxNumberOfBullets.ToString(); } // Update is called once per frame void Update() { if (ovrGrabbable.isGrabbed && OVRInput.GetDown(shootingButton, ovrGrabbable.grabbedBy.GetController()) && maxNumberOfBullets > 0) { simpleShoot.TriggerShoot(); bulletText.text = maxNumberOfBullets.ToString(); maxNumberOfBullets--; } } }
총에 스키립트를 추가 후 텍스트 문구를 넣어주겠습니다.
그리고 트리거 버튼과 총알 갯수도 설정해 주시면 됩니다.
1-3) 사운드 적용
총알 소리가 없으니 허전하겠죠.
총에 Audio Source 컴포넌트를 추가해 주신 다음,
Spatial Blend를 이용해 3d로 설정해 주세요.
VR 공간에서 사운드를 입체감 있게 들을 수 있습니다.
기존의 ShootIfGrabbed 스크립트에 오디오 관련 기능을 추가하겠습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ShootIfGrabbed : MonoBehaviour { private SimpleShoot simpleShoot; private OVRGrabbable ovrGrabbable; public OVRInput.Button shootingButton; public int maxNumberOfBullets = 10; public Text bulletText; public AudioClip shootingAudio; // Start is called before the first frame update void Start() { simpleShoot = GetComponent(); ovrGrabbable = GetComponent (); bulletText.text = maxNumberOfBullets.ToString(); } // Update is called once per frame void Update() { if (ovrGrabbable.isGrabbed && OVRInput.GetDown(shootingButton, ovrGrabbable.grabbedBy.GetController()) && maxNumberOfBullets > 0) { GetComponent ().PlayOneShot(shootingAudio); simpleShoot.TriggerShoot(); bulletText.text = maxNumberOfBullets.ToString(); maxNumberOfBullets--; if (maxNumberOfBullets <= 0) maxNumberOfBullets = 10; } } }
사운드 소리는 무료로 가져와도 되지만,
에셋에 있던 문 소리를 넣어봤습니다ㅎㅎ
1-4) 진동 효과
총을 쏠 때 컨트롤러에 진동효과가 있으면 좋겠죠?
VivrationManager를 만들어 주겠습니다.
계속 사용해주기 위해서 싱글턴 처리와
진동효과 기능을 메소드로 만들어 주었습니다.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class VibrationManager : MonoBehaviour { public static VibrationManager singleton; // Start is called before the first frame update void Start() { if (singleton && singleton != this) { Destroy(this); } else { singleton = this; } } public void TriggerVibration(AudioClip vibrationAudio, OVRInput.Controller controller) { OVRHapticsClip clip = new OVRHapticsClip(vibrationAudio); if (controller == OVRInput.Controller.LTouch) { OVRHaptics.LeftChannel.Preempt(clip); } else if (controller == OVRInput.Controller.RTouch) { OVRHaptics.RightChannel.Preempt(clip); } } }
진동은 값을 이렇게 바꾸면서 줄 수 있는데 참고해 주세요^^
진동 효과를 조절해 주기위해서 해당 코드도 추가해 줄게요!!
ShootIfGrabbed 스크립트에 해당 기능을 넣어주겠습니다.
트리거 버튼을 눌렀을 때 진동효과를 넣어주는 코드입니다.
2. 마무리
오늘 강의는 여기까지입니다.
오큘러스 퀘스트를 이용해 텍스트 문구와 사운드, 진동 주는걸 배워보았습니다.
슈팅게임이라고 말하기는 모자르지만 대략적인 기능을 적용해 보았네요.
오늘도 고생하셨습니다.
감사합니다.
수업자료: 오큘러스 퀘스트 응용 슈팅게임 #3 - 텍스트 문구와 진동