낑깡의 게임 프로그래밍 도전기

50일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기 본문

인강 후기

50일차 : '한 번에 끝내는 유니티&C# 게임 개발 초격차 패키지' 강의 후기

낑깡겜플밍 2025. 8. 19. 13:02
반응형

 

학습 시작 시간
학습 종료 시간
오늘 들었던 강의 시작과 종료

 오늘은 유니티에서 카메라 쉐이크(Camera Shake) 효과를 구현하는 방법을 배웠다. 단순히 화면을 흔드는 것 같지만, 실제로는 연출의 몰입감을 크게 높여주는 중요한 기술이라는 걸 느꼈다. 폭발이 터질 때, 총을 발사할 때, 혹은 강한 충돌이 일어날 때 카메라가 순간적으로 흔들리면 플레이어는 훨씬 더 현실적인 타격감을 느낄 수 있다.

랜덤을 활용한 흔들림
 카메라 쉐이크의 기본은 랜덤(Random) 값을 이용해 카메라의 위치나 회전을 짧게 흔드는 것이다. 단순히 좌표를 일정하게 흔드는 것보다, 매 프레임마다 조금씩 다른 랜덤 값을 주면 더 자연스럽고 예측 불가능한 진동이 만들어진다. 이때 중요한 건 흔들림의 강도와 지속 시간을 적절히 조절하는 것인데, 너무 크면 화면이 불안정해지고, 너무 약하면 효과가 잘 느껴지지 않는다.

[RequireComponent(typeof(Camera))] 속성
 쉐이크를 스크립트로 구현할 때 [RequireComponent(typeof(Camera))] 속성을 사용했다. 이 속성을 붙여두면 해당 스크립트가 반드시 카메라 컴포넌트가 있는 오브젝트에만 붙을 수 있어서, 실수로 다른 오브젝트에 적용하는 오류를 미리 방지할 수 있다. 단순한 어노테이션 같지만, 협업이나 대규모 프로젝트에서 스크립트와 컴포넌트의 일관성을 보장하는 습관으로 굉장히 유용하다는 걸 알게 됐다.

Coroutine과 StopCoroutine
 카메라 쉐이크는 보통 코루틴(Coroutine) 으로 구현하는데, 일정 시간 동안만 카메라를 흔들다가 다시 원래 위치로 돌려놓는 방식이다. 여기서 중요한 점은 쉐이크가 중첩되거나 꼬이지 않도록 관리하는 것이다. 그래서 StopCoroutine을 사용해 이전 쉐이크를 멈추고 새로 시작하게 만들면, 여러 이벤트가 겹쳐도 부드럽게 제어할 수 있다. 즉, 단순히 흔드는 것에서 그치지 않고, 언제 시작하고 언제 끝낼지, 중첩 상황을 어떻게 처리할지까지 설계하는 게 연출 품질을 좌우한다는 걸 배웠다.

학습 인증샷
오늘의 완강률

오늘부로 68클립을 들었다.

 

반응형