이 매우 짧은 Unity 2D 프로그래밍 튜토리얼에서는 Camera가 메인 캐릭터를 즉시 따라가는 대신 약간의 지연을 두고 따라오도록 만드는 방법을 보여 드리겠습니다. 이렇게 하면 더 부드러운 전환을 만들 수 있습니다.



영상 자막 텍스트

안녕하세요 여러분! 이 매우 짧은 Unity 2D 프로그래밍 튜토리얼에서는 Camera가 메인 캐릭터를 즉시 따라가는 대신 약간의 지연을 두고 따라오도록 만드는 방법을 보여 드리겠습니다. 이렇게 하면 더 부드러운 전환을 만들 수 있습니다.

이 튜토리얼은 Unity에서 Delta Time 개념에 이미 익숙하고, 가능하다면 Slerp와 같은 보간 개념도 알고 있는 분들을 대상으로 합니다. 저는 이러한 개념을 다른 기초 튜토리얼에서 이미 다룬 적 있으며, 해당 내용은 채널의 영어 영상과 제 웹사이트의 여러 언어로 작성된 문서 버전에서 확인할 수 있습니다.

제가 보여 드릴 예제에서는 설명을 단순하게 하기 위해 X axis 방향 이동에 대한 코드만 작성하지만, 동일한 방식으로 Y axis 방향의 수직 이동에도 쉽게 확장할 수 있습니다.

먼저 따라갈 캐릭터의 위치에 Camera 위치를 고정하는 기본 스크립트부터 시작하겠습니다. 여기서 Camera Controller라고 부르는 이 스크립트에는 private Transform 타입 변수가 포함되어 있으며, 이 변수는 editor에서 따라갈 object에 할당되어 해당 위치를 가져올 수 있도록 합니다.

Update 함수에서는 player 위치의 X 좌표를 가져오는 float 타입 변수가 있으며, 이 값은 Camera의 기존 X 위치 대신 Camera X라는 값으로 Camera 위치에 사용되어 Camera가 캐릭터를 즉시 따라가도록 합니다.

첫 번째로 시도할 변화는 Lerp를 사용하는 방법입니다. 이를 위해 editor에서 조정할 수 있는 float 타입의 private 변수 Follow Time을 추가합니다. Update 함수에서는 Camera의 X 좌표를 정의하기 위해 option number 2를 사용하며, 이제 이 값은 Lerp 함수의 결과로 결정됩니다.

Lerp는 Transform Position으로 주어지는 현재 object 위치와 Player Position으로 주어지는 목표 위치 사이에서 linear interpolation을 수행하는 Unity의 기본 함수입니다. 보간 파라미터는 Delta Time과 Follow Time 변수의 비율로 표현되며, 이를 통해 Camera가 목표 위치에 점진적으로 가까워지는 속도를 제어할 수 있고, 실행 중에도 editor에서 이 동작을 쉽게 조정할 수 있습니다.

Lerp 함수를 사용하면 매 frame마다 Camera가 위치를 업데이트하면서 목표 지점에 점진적으로 가까워집니다. 이렇게 하면 Camera 이동이 즉시 이동하는 경우보다 덜 급격하게 보이게 됩니다. 그러나 Lerp는 목적지에 가까워질 때 속도를 감쇠시키지 않는 linear interpolation이기 때문에 접근 마지막 단계에서 움직임이 다소 덜 자연스럽게 보일 수 있습니다. 더 부드러운 전환을 얻기 위해 Smooth Damp 방법을 사용할 수 있습니다.

이제 Smooth Time과 Velocity라는 두 개의 새로운 변수를 추가합니다. 특히 Smooth Time은 Lerp에서의 Follow Time과 마찬가지로 interpolation을 조정하는 데 사용되는 private float 변수입니다. 반면 Velocity 변수는 Smooth Damp method에 전달되어 실행 중 현재 속도를 저장하는 float 변수입니다.

기본 Smooth Damp method를 사용하면 Camera가 목적지 위치에 가까워질수록 속도가 점차 감소하는 덜 급격하고 감쇠된 움직임을 구현할 수 있습니다. Velocity 변수는 현재 고려 중인 axis 방향에서 Camera의 현재 속도를 나타냅니다. Velocity는 reference로 method에 전달되며 interpolation 동안 매 frame마다 자동으로 업데이트됩니다.

코드에서 Camera의 X 좌표는 이제 Smooth Damp에 의해 수행된 interpolation 결과로 설정됩니다. 이 방식은 두 값 사이를 보간한다는 점에서 Lerp와 개념적으로 유사하지만 더 부드러운 전환을 생성하며, method signature에서 float 변수 Velocity도 함께 사용합니다.

Smooth Damp는 점진적인 속도 감쇠를 추가하여 움직임을 더 자연스럽게 만들어 주는 Lerp의 발전된 형태로 볼 수 있습니다.

자, 이번 영상은 여기까지입니다! 도움이 되었다면 Like와 채널 구독으로 응원해 주세요. 곧 다시 뵙겠습니다!

이 사이트는 제 작업 일부를 소개하기 위한 목적만을 가지고 있으며, 어떠한 홍보 목적도 포함하지 않습니다. 현재 맞춤 작업, 컨설팅 또는 기타 어떤 형태의 업무 협업에 대한 요청도 받고 있지 않으며, 이에 대해 응답하지 않으니 양해 부탁드립니다.


확장된 개인정보 및 쿠키 사용 정책