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

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

인강 후기

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

낑깡겜플밍 2025. 8. 14. 12:43
반응형

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

이 번 주제는 오브젝트를 선형보간(Linear Interpolation, Lerp) 으로 움직이는 방법이었다. 겉보기엔 단순히 “A에서 B로 부드럽게 이동”이지만, 사실 핵심은 P(t) = (1 - t) * A + t * B라는 단순한 수학식 안에 있다. 여기서 중요한 건 t 값(0~1)을 어떻게 관리하느냐이다. t가 0이면 시작 위치, 1이면 목표 위치이며, 그 사이 값은 중간 지점이다. Vector3.Lerp(current, target, Time.deltaTime * speed)처럼 매 프레임 호출하면 시작점이 계속 갱신되어 목표에 무한히 수렴하는 ‘따라가기’ 느낌이 나고, 정해진 시간 안에 딱 도착하는 구조는 되지 않는다. 반면 t를 elapsedTime / duration 형태로 누적·정규화하면, 프레임 속도와 관계없이 같은 시간에 정확히 도착하는 이동을 구현할 수 있다.

 위치와 회전 보간 방식도 다르다. 위치는 +(더하기) 연산으로 좌표를 바꾸지만, 회전은 쿼터니언(Quaternion) 이라서 *(곱하기) 연산으로 누적해야 한다. 보간에서도 위치는 Vector3.Lerp를 쓰고, 회전은 Quaternion.Slerp로 처리해야 자연스러운 회전 궤적이 나온다.

 강의가 끝나고 좀더 찾아보았다. 

 선형보간에 있어서 프레임 독립성도 중요한 요소였다. 같은 코드를 써도 30FPS와 120FPS에서 이동 속도가 달라지지 않으려면 Time.deltaTime을 곱해 정규화하는 습관이 필수다. 보간이라면 t를 시간 누적 기반으로, 일정 속도 이동이라면 Vector3.MoveTowards나 Quaternion.RotateTowards처럼 프레임 단위 이동량이 일정한 방식을 쓰는 게 안정적이다.

 또한 선형보간은 속도가 일정하기 때문에, 연출적으로 초반-중반-후반 속도를 조절하려면 Mathf.SmoothStep이나 AnimationCurve를 활용해 t 값을 가공하는 방식이 좋다. 이렇게 하면 단순한 Lerp도 부드러운 이징(Easing) 효과를 낼 수 있다.

 물리와 함께 쓸 때는 Update에서 transform을 직접 바꾸기보다, FixedUpdate에서 Rigidbody.MovePosition/MoveRotation으로 처리하는 것이 충돌 안정성에 유리하다. 보간은 부드러움, 물리는 정합성에 초점을 맞추어 역할을 분리하는 것이 이상적이다.

학습 인증샷
오늘의 완강률

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

내일도 파이팅!

반응형