Unity 2022.3.17f 버전을 사용하여 2D 게임을 제작하던중 플레이어를 카메라로 추적하고 있었습니다. 이때 플레이어는 RigidBody2D를 사용하여 타일 위를 이동하고 있었습니다.
if (target == null) return;
// 부드러운 카메라 이동
Vector3 desiredPosition = target.position + offset;
desiredPosition.z = transform.position.z;
transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime);
위 코드를 카메라에 추가하고 target에 플레이어 오브젝트를 연결했습니다.
이 때 카메라가 플레이어를 추적하고 있었지만 플레이어가 떨리는 것처럼 보이는 현상이 보였습니다.
문제 해결을 하기 위해 아래 단계를 순차적으로 시도하였습니다.
이 과정에서 카메라가 추적하는중에 흔들리는 것은 움직임이 발생하는 중에만 발생하여
RigidBody와 관련 되있다는것을 파악하였습니다.
위의 조치를 모두하였음에도 카메라 떨림은 여전하였습니다.
추가적인 조사결과 카메라의 움직임과 오브젝트의 움직임 주기의 차이에서 나타나는 것을 발견하였습니다. 지금은 플레이어 오브젝트를 움직이는 RigidBody는 물리 연산으로 FixedUpdate에서 호출되며 카메라의 움직임은 LateUpdate에서 호출 되는 상황이였습니다. 그렇기에 이를 개선할 필요가 있었습니다.
문제를 해결하기 위해 다음과 같은 조취를 취했습니다.
FixedUpdate()에서 카메라가 이동하도록 바뀐 뒤 흔들리는 문제가 해결되었다.
캐릭터가 움직여도 카메라에 흔들리는 것처럼 보이지 않게 되었다.
이와 함께 추후 카메라 이동 스크립트의 호출을 언제 할지 점검하여 유사한 문제를 예방하도록 한다.