🐧 들어가기 앞서

총기 발사와 오디오를 합치는건 굉장히 어려운 일이다.
싱크를 맞추는 작업이 생각보다 까다로웠다.


🐧 오늘 배운 것

  1. 오디오

🐧 기억할 것 & 진행

게임을 만들다보면, 오브젝트의 행동에 소리를 연결하는 경우가 많다.
그러나 소리가 내가 원하는 행동과 일치하지 않을 경우, 싱크를 맞춰야한다.

동기화를 제대로 처리하지 않으면, 사용자가 게임을 어색하게 받아들이며 자연스러운 게임이 아니게 된다.

고려 사항

1. 오디오 클립 재생 시간

오디오 클립은 고유한 재생시간을 가진다. 예를 들어, 총기 교체(Cocking)소리가 0.5초에 걸쳐 재생된다면, 이 0.5초 동안은 다른 액션이 실행되지 않아야 한다.

2. 코루틴

비동기 작업을 처리하는 방법도 유용하다.

IEnumerator WaitForCocking()
{
    yield return new WaitForSeconds(0.5f);   // 카킹 소리 재생 시간만큼 대기
    isSwitchingGun = false;
}

Cocking 소리가 완전히 끝난 후에야 isSwitchingGun 변수 값을 변경한다.

3. 상태 변수

상태 변수를 활용하여 현재 어떤 상태인지 추적 가능하다.

4. 외부 스크립트 접근

Unity 프레팹(Prefab)에 붙어 있는 스크립트 내부의 메서드나 변수에 접근하기 위해서는 GetComponent<>() 메서드를 사용한다.
예시 코드에서 Gun 스크립트의 SetCanShoot() 메서드는 총기의 발사 가능 상태를 변경하는 역할을 한다.

Gun gunScript = currentPrefab.GetComponent<Gun>();
if(gunScript != null)
{
    gunScript.SetCanShoot(!isSwitchingGun);
}

이 메서드를 호출함으로써 총기 교체가 완전히 끝난 후에만 총기 발사가 가능하도록 제어할 수 있다.


🐧 내일 할 일

게임 로직 및 오디오 마무리

0개의 댓글