게임 충격감을 생생하게 만드는 방법 (카메라 흔들림 + 사운드)
요약
본 기사는 Unity 엔진을 사용하여 게임에 생생한 충격감과 역동성을 더하는 방법을 다룹니다. 'smooth shake' 에셋을 활용하여 카메라 흔들림, 오브젝트 떨림 등을 구현하고, 애니메이션 이벤트와 결합하여 발자국 소리나 특정 동작 시점에 맞춰 효과를 발생시키는 구체적인 튜토리얼을 제공합니다.
핵심 포인트
- Unity의 'smooth shake' 에셋으로 충격감과 진동 효과 추가 가능
- 진폭(amplitude)과 주파수(frequency) 조절로 원하는 떨림 강도 설정
- 애니메이션 이벤트에 커스텀 메서드를 연결하여 발자국 등 동적 효과 구현
여러분, 안녕하세요. Matt입니다. Speed Too에 오신 것을 환영합니다. 오늘 저는 여러분의 게임 속 특정 요소들에 약간의 '즙(juice)'을 더하는 것에 대해 이야기하고 싶습니다. 충격감(impacts)이든, 카메라 흔들림(camera shakes)이든, 사운드 효과(sound effects)가든 상관없이요. 제가 'smooth shake'라는 무료 에셋을 가지고 있는데, 이것은 카메라나 게임 오브젝트에 컴포넌트를 추가하여 다양한 방식으로 떨리게 만드는 훌륭한 방법입니다. 그리고 저는 괴수(kaiju) 또는 거대 괴물이 도시를 걸어 다니는 예시 하나를 통해 여러분에게 보여드리려고 합니다.
보시다시피, 제가 시작할 때 이 캐릭터는 그냥 앞으로 걸을 뿐이라 조금 어색해 보입니다. 최고의 몬스터 워킹 애니메이션은 아니지만, 이 튜토리얼을 대표하기 위한 무언가일 뿐입니다. 그리고 저는 캐릭터가 발을 구를 때 분위기(ambience)와 사운드 효과를 추가하고, 카메라 흔들림을 추가하여 이것이 거대한 괴물처럼 느껴지도록 만들었습니다. 제가 시작하는 에셋은 'smooth shake free'라는 것입니다. 그러니 Unity에서 그것을 열어보세요. 그러면 'smooth shake free'라는 폴더가 있을 겁니다.
여러분은 이 'smooth shake 컴포넌트'를 다른 모든 오브젝트에 추가하기만 하면 됩니다. 이제 메인 카메라가 흔들리게 만들고 싶습니다. 그래서 제가 smooth shake free 오브젝트를 추가했습니다. 그리고 시작 시 떨림을 활성화할 수 있는 설정이 있고, 지속적인 떨림(constant shake)을 원하면 그럴 수도 있습니다. 페이드 인 시간(fade in time), 페이드 아웃(fade out)도 있습니다. 또한 진폭(amplitude)과 주파수(frequency)에 따라 흔들림과 회전(shaking and rotating)에 대한 다양한 설정이 있어, 더 역동적으로 느껴지게 만들 수 있습니다. 그리고 화이트 노이즈(white noise) 또는 사인파(sine wave)를 선택할 수도 있습니다.
그리고 X, Y, Z 값을 조정하여 얼마나 흔들릴지 확인할 수 있습니다. 좋은 점은 카메라가 어지러운 충격(dizzy hit), 술에 취한 듯한 카메라(drunken camera), 멀미(seasick) 등 원하는 대로 다양한 프리셋이 있다는 것입니다. 따라서 기본적인 충격 이상의 효과를 만들 수 있습니다. 하지만 제 경우에는 이 충격을 선택하고 싶습니다. 여기에 있는 프리셋을 클릭하여 복제할 수도 있습니다. 제가 이 설정을 위해 한 것은 진폭(amplitude)을 0.3에서 시작하는 대신 각각 0.1로 약간 줄인 것입니다.
왜냐하면 저는 충격이 조금 덜 느껴지게 하고 싶었기 때문입니다. 이제 제 경우, 거대한 카이주 캐릭터가 있습니다. 이 효과를 발자국 소리가 날 때 발생시키고 싶었습니다. 제가 한 방법은 캐릭터를 선택하고 원하는 애니메이션인 오크 걷기(orc walk)를 선택한 것입니다. 그리고 타임라인을 스크럽하여 이 애니메이션이 정확히 어디에서 재생되는지 볼 수 있습니다. 그리고 캐릭터가 장면에 나타나서 움직이는 것을 보았습니다. 또는 캐릭터의 발이 가장 많은 무게로 땅에 닿은 것처럼 보이는 순간, 즉 이벤트가 발생할 것으로 예상되는 지점을 찾았습니다.
그래서 프레임 12 근처에서 '이벤트 추가(add an event)' 버튼을 클릭했습니다. 그리고 이 애니메이션에서 이 이벤트가 발생해야 할 때 재생되기를 원하는 함수를 실제로 지정할 수 있습니다. 보통은 여기에 텍스트 상자로 작성할 수 있지만, 제가 이미 사용했기 때문에 플레이어 컨트롤러와 메서드에 대해 알고 있습니다. 저는 발자국 충격(footstep shake)을 원했고, 이것은 발이 땅에 떨어질 때마다 흔들림을 추가하고 싶었던 사용자 정의 메서드(custom method)입니다. 그리고 다른 발의 경우, 제가 발이 닿았다고 생각한 순간으로 옮겼습니다.
그리고 여기에 또 다른 이벤트를 추가하고 발소리(footstep)를 넣었습니다. 하지만 유일한 차이점은 첫 번째 값은 0으로, 두 번째 값은 1로 정수(integer)를 보냈다는 것입니다. 따라서 어느 쪽이 왼쪽 다리인지 오른쪽 다리인지 알 수 있게 했습니다. 이렇게 하면 다양한 효과에 변화를 줄 수 있습니다. 그래서 플레이어 스크립트에서 발소리를 할 때 무슨 일이 일어나는지 보면, 여기 발소리 흔들림(footstep shake)을 볼 수 있습니다. 저는 처음에 발 인덱스(foot index)의 정수 값을 0으로 설정했습니다. 이것만으로는 괜찮았지만, 발이 닿을 때마다 흔들림을 재생하고 싶었습니다.
제가 하는 모든 것은 스무스 쉐이크(smooth shake)를 찾고, 이 흔들림 컴포넌트가 camera.main의 get component인 스무스 쉐이크입니다. 따라서 카메라에 있던 그 스무스 쉐이크가 null이 아닌 한, 우리가 해야 할 일은 단순히 컴포넌트 dot start shake를 하는 것입니다. 그러면 그 흔들림이 시작됩니다. 그래서 제 씬에서 캐릭터가 걸을 때, 원하는 대로 카메라 흔들림(camera shake)이 발생하는 것을 볼 수 있습니다. 이제 발소리 흔들림에서는 캐릭터가 부딪힐 때 큰 '쿵' 소리 효과음(sound effect)을 넣고 싶습니다. 그래서 위쪽에는 발소리 오디오에 대한 몇 가지 설정이 있는데, 클립(clip), 피치(pitch), 그리고 볼륨 변화폭(volume variance)입니다. 왜냐하면 제가 그것들을 크게 변화시키지는 않을 것이기 때문입니다.
우리가 원하는 오디오 소스(audio source)를 찾고, 시작하거나 깨어날 때(at start or wake) 그것을 찾는 것을 확실히 합니다. 다시 발소리 흔들림 메서드(footstep shake method)로 돌아가서, 클립과 오디오 소스가 선택되어 있는지 확인합니다. 그리고 어떤 경우에도, 설정한 변화폭 사이의 무작위 범위(random range)에서 피치를 적용하고, 약간의 변화를 줄 수 있도록 볼륨도 무작위 범위에서 적용합니다. 그리고 이 경우에는 발소리 특정 패닝(footstep specific sort of pan)을 하여 귀 쪽으로 변경하는 것입니다. 그래서 오디오 소스의 팬 스테레오(audio source.pan stereo)가 우리의 발 인덱스에 따라 어떻게 달라지는지 볼 수 있습니다.
그리고 나서 원하는 오디오를 재생할 건데, 이것을 구현하기 위한 일회성 클립(oneshot clip)입니다. 그래서 인스펙터에서 괴물 발소리 효과음(monster step sound)을 추가합니다. 이렇게 하면 실제로 쿵 소리와 걸어 다니는 움직임에 흔들림까지 결합할 수 있습니다. 물론, 배경의 혼란과 경찰 같은 오디오 효과와도 결합할 수 있습니다. 더 좋은 오디오를 만드는 데 팁을 하나 더 드리겠습니다. 현재 괴물 발소리나 배경 오디오만으로도 멀리서 충격이 가해지는 듯한 소리가 납니다.
하지만 항상 그런 상황이 아닐 때 할 수 있는 것은, 계층 구조(hierarchy)에서 마우스 오른쪽 버튼을 클릭하고 '오디오(audio)'를 선택한 다음 '오디오 리버브 존(audio reverb zone)'을 선택하는 것입니다. 저는 이것의 이름을 '도시 리버브 존(city reverb zone)'으로 바꿨는데, 이는 이 영역에 있는 모든 오디오 소스가 언제든 영향을 받는다는 의미입니다. 따라서 지연(delay)이나 왜곡(distortion) 같은 효과를 추가해 줍니다. 실제로 도시용 프리셋이 있지만, 제 것을 크게 바꾸지는 않습니다. 저는 좀 더 약물에 취한 듯한 버전(drugged version)을 선택했는데, 이것이 모든 효과의 느낌을 확장시켜 줍니다. 오디오 테스트 예시를 보여드리겠습니다.
그리고 가지고 있는 오디오 소스 중 아무거나 선택했다면, 리버브 존 믹스(reverb zone mix)가 1 이상으로 설정되어 있는지 확인해야 합니다. 그래야 이 효과가 고려됩니다. 이제 제가 '드롭된 버전(dropped version)'을 활성화했다가 다시 비활성화하겠습니다. 두 가지 효과의 차이점과 특정 영역에 있을 때 우리가 사용하고 싶은 사운드 효과를 얼마나 길게 늘여주는지 들으실 수 있습니다. 마치 우리가 괴물을 통제하는 훨씬 높은 곳에 있는 것 같은 느낌을 줍니다.
물론, 이것을 더 발전시켜서 발소리의 다양한 변형이나 발생할 수 있는 여러 '쿵' 소리들의 다양한 변형들을 만들 수도 있습니다. 그러니 아래에 어떤 팁이 있으신지 알려주시고, 제가 제공하는 230가지가 넘는 스크립트, 에셋, 프로젝트를 얻으시려면 제 Patreon도 꼭 확인해 주세요. 다른 곳에서는 찾을 수 없습니다. 그리고 아래의 Unity 세일과 모든 것을 확인해 보세요. 저의 모든 후원자분들께 진심으로 감사드립니다. 특히 Party of 10과 very shuther에게 놀라운 지원에 특별히 감사드립니다. 그리고 시청해주신 모든 분들께도 정말 감사합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube SpeedTutor (Unity)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기