유니티 시네머신의 Follow 기능을 사용해 플레이어 캐릭터를 추적하던 중, 캐릭터가 떨리는 현상이 생겼다.
이전에 시네머신을 사용했을 때는 캐릭터가 떨리는 현상 없이 잘 움직였었는데, 이번에는 캐릭터가 덜덜덜덜 떨리기 시작했다.
원인
원인이 뭔지 분석해보는 과정에서, 전에 사용했을 때는 FixedUpdate에서 이동을 처리하지 않았다는 사실이 떠올랐다. 즉, Rigidbody를 이용한 이동에서 문제가 생겼다는 것이다. 이는 물리 연산을 처리하는 타이밍과 시네머신 브레인(Cinemachine Brain)에서 정보를 업데이트하는 타이밍 차이에서 오는 문제임이 분명했다.
더 정확한 원인을 찾고자 정보를 찾아 보던 중 Unity Korea에서 제공하는 좋은 자료 영상을 발견했다.
영상에서는 FixedUpdate를 사용하는 카메라에서 Update 또는 LateUpdate를 통해 처리하면 호출 주기 간 차이로 인해 떨림 현상이 발생할 수 있다고 설명하고 있다.
해결
시네머신이 호출되는 카메라 주기는 기본적으로 UpdateMethod와 BlendUpdateMethod 값이 Update로 설정되어 있다.
이를 FixedUpdate로 변경해 물리 연산과 호출 순서를 맞춰 문제를 해결했다.
'내일배움캠프' 카테고리의 다른 글
내일배움캠프: SortingLayer (1) | 2024.12.10 |
---|---|
내일배움캠프: GetInstanceID (0) | 2024.12.09 |
내일배움캠프: 타일맵 이미지 동적으로 변경하기 (2) | 2024.12.05 |
내일배움캠프: Unity Pool (1) | 2024.12.03 |
내일배움캠프: 유니티 Conditional을 활용한 분기 (0) | 2024.12.02 |