5 개의 강의

목차

Game Parameter

Switch는 게임 오브젝트 범위에서 작동하며 State는 전역적 범위에서 작동하는 반면 Game Parameter는 두 가지 상황에서 모두 사용할 수 있습니다. 이전 섹션인 'Wwise-Type을 사용하여 Game Parameter 설정하기'에서 설명한 것처럼 Game Parameter 프로퍼티를 선언할 때 SetValue()나 SetGlobalValue() 함수를 사용하도록 선택할 수 있습니다. 그럼 Enemy_EvilHead_MovementSpeed Game Parameter가 각 Evil Head에서 게임 오브젝트 범위로 사용된 경우를 직접 살펴봅시다.

  1. Unity에서 Audiokinetic > Certification > 301 > Lesson 5로 간 후 Understanding Global and Game Object Scope을 선택하세요.

    이 씬에서는 세 마리의 Evil Head가 모험가를 둘러싸고 있습니다. 이 중 한 마리의 Evil Head가 Player를 공격할 때 다음과 같은 동작을 순차적으로 실행합니다. 먼저 모험가를 보고 그 쪽으로 돌아서서 공격 준비가 된 것을 드러냅니다. 그런 다음 모험가를 향해 돌진하면서 모험가와 충돌하면 뭅니다. 각 동작에는 Player가 적들을 직접 보지 않아도 상황을 알 수 있는 사운드를 심었습니다. 뿐만 아니라 적들이 서성이는 소리가 반복 재생되어 Main Camera로부터 Evil Head가 있는 위치를 계속해서 리스너에게 알려줍니다. EvilHead_Hover_LP Sound SFX는 비교적 숨겨진 오디오 큐입니다. 이 소리에 RTPC를 이용해 Evil Head의 속도에 따라 Wwise Tremolo Effect 주파수가 바뀌도록 설정해놓았습니다. Player가 Evil Head의 현재 행동을 알 수 있도록 도와주기 위해서이죠. 플레이어가 전투하는 Evil Head의 수와 상관 없이, 필요한 Game Parameter의 수는 단 하나입니다. 게임을 플레이하고 Game Object Profiler를 통해 게임에 연결해서 Game Parameter가 게임 오브젝트 범위에서 사용되는 방법을 좀 더 이해해봅시다.

  2. Wwise에서 Layouts으로 가서 Game Object Profiler를 선택하세요.

    연결하기 전에 Evil Head와 Enemy_EvilHead_MovementSpeed만 관찰할 수 있게 포커스를 맞춰봅시다. Game Object Profiler 레이아웃의 Game Sync Monitor에는 모든 게임 오브젝트가 표시됩니다. Object Filter를 사용하면 모니터링할 특정 오브젝트를 선택할 수 있습니다.

  3. Game Sync Monitor의 Object Filter 상자 옆에 있는 Browse For Object()를 클릭하세요.

  4. Enemy_EvilHead_MovementSpeed Game Parameter를 선택하고 OK를 클릭하세요.

    이제 Enemy_EvilHead_MovementSpeed Game Parameter를 사용하는 Wwise Adventure Game의 모든 오브젝트를 볼 준비가 되었습니다. 다음으로 게임에 연결해봅시다. 테스트를 위해서 플레이어의 체력이 깎이는 기능을 끄겠습니다.

  5. 씬을 Play하고 ESC를 눌러서 WAG 메뉴로 들어가세요. 거기에서 GOD MODE를 선택하세요.

  6. Wwise 툴바에서 Remote를 클릭하고 Wwise Adventure Game(Editor)를 선택한 후 Connect를 클릭하세요.

  7. 5~10번 정도 Evil Head의 공격을 피하면서 가끔씩 공격을 해줍시다.

  8. Play 모드를 Exit하고 Wwise로 돌아가세요.

[참고]

Village 쪽으로 뛰어가지 마세요! 이 부분은 보호되어 있기 때문에 EvilHead가 Village에 가까이 가면 죽고 맙니다.

Wwise에서 Game Object Profiler는 하나의 그래프에 겹쳐진 모든 EvilHead를 표시합니다.

Evil Head가 공격을 준비하기 시작하면 곡선이 급격하게 치솟아서 움직임이 증가함을 보여줍니다. Evil Head가 공격 준비를 멈추면 Evil Head가 다시 공격을 준비하기 전까지 곡선이 내려갑니다. 곡선이 갑자기 증가하는 부분은 Evil Head가 공격을 받아서 방해받는 부분입니다. 보시다시피 각 Game Object의 Game Parameter 곡선이 동일하지 않습니다. 각 Evil Head의 행동을 개별적으로 나타내죠. 다음 SetMovementSpeed() 함수에서 보실 수 있듯이 Enemy_EvilHead_MovementSpeed Game Parameter는 SetValue() 함수를 통해 설정되고 있습니다.

 
private void SetMovementSpeed(float speed) {
    MovementRTPC.SetValue(gameObject, speed);
}

위의 함수에서는 'gameObject'와 'speed' 변수를 SetValue() 함수에 보내고 있습니다. 바로 이 speed 변수가 Game Parameter로 설정되어야 합니다. gameObject는 Enemy_EvilHead_Hover Event가 게시된 게임 오브젝트입니다.

[참고]

Game Parameter를 전역적 범위와 게임 오브젝트 범위에서 모두 사용하면, 지정된 게임 오브젝트의 전역적 설정(SetGlobalValue())을 게임 오브젝트 범위 설정(SetValue())이 항상 덮어씁니다(override). 전역적 범위로 설정된 Time_of_Day Game Parameter를 예로 들어봅시다. 동일한 게임 오브젝트에서 Woodlands Ambience와 같은 타 스크립트가 SetValue() 함수를 사용하려고 할 경우, SetValue() 함수가 이를 이어받아 Woodlands Ambience는 게임 오브젝트에서 정의된 Game Parameter 값에만 의존하게 됩니다. 그렇기 때문에 전역적인 단위에서 Time_of_Day Game Parameter에 일어나는 변화는 이제 Woodlands Ambience에 영향을 끼치지 않습니다.


이 페이지가 도움이 되었나요?