알고리즘 공부/C++

[Unity] 2D 카메라 추적

마달랭 2024. 12. 26. 16:35
반응형

개요

캐릭터를 씬에 배치한다 하여도 캐릭터가 카메라의 범위를 벗어나면 캐릭터의 위치를 알 수 없다.

따라서 카메라가 캐릭터를 따라다니며 캐릭터의 이동을 계속하여 추적하여야 한다.

이는 스크립트를 추가하거나 유니티의 Cinemachine 기능을 사용해 쉽게 해결할 수 있다.

 

카메라가 매 프레임마다 플레이어의 위치를 복사하도록 스크립트를 작성하는 것도 방법이지만

Cinemachine을 사용해 카메라 추적을 더 쉽게 구현할 수 있으므로 해당 방법을 사용하자

 

 

Cinemachine

 

  1. Window -> Package Manager 클릭
  2. 상단 Unity Registry에서 Cinemachine을 검색해 설치
  3. 설치 후, **Hierarchy -> Create -> Cinemachine -> 2D Camera**를 추가
  4. Hierarchy에서 CM vcam1(가상 카메라)을 선택
  5. Inspector에서 Follow에 Player를 드래그해 연결

 

 

CM vcam1을 선택 후 Inspector에서 위와 같이 세팅해 준다.

 

 

카메라 관성 없애기

위와 같은 세팅에서는 플레이어가 이동할 때 카메라에 관성이 적용되어 있다.

이는 Cinemachine의 Inspector에서 Damping 항목의 값을 조절해 주면 된다.

아마 Damping 항목의 기본값이 모두 1로 설정 되어있을 텐데 이를 모두 0으로 설정해 준다.

0으로 설정하면 카메라가 즉각적으로 반응하게 된다.

 

만약 자신이 만들고자 하는 구현 방법이 관성이 필요하다면 적절하게 설정해 주면 된다.

 

 

 

텍스처 필터링 개선

카메라의 움직임에 픽셀이 약간 깨져서 보이는 경우가 있을 수 있다.

이는 픽셀 간 간격 문제나 텍스처 필터링 문제로 서브픽셀 렌더링, UV 좌표 오차, 또는 카메라 위치로 인해 발생할 수 있다.

 

유니티에서 2D 게임에서 흔히 사용하는 Pixel Perfect Camera를 설정하면 깔끔하게 해결된다.

 

 

  1. Main Camera를 선택
  2. Inspector에서 Add Component를 클릭하고, Pixel Perfect Camera를 검색해 추가
  3. Assets/Resources에서 Tilemap이나 Sprite를 선택하고, Pixels Per Unit 값을 확인
  4. Pixel Perfect Camera의 Assets Pixels Per Unit 값에 같은 숫자를 입력
  5. Reference Resolution에서 원하는 해상도 설정
  6. Upscale Render Texture 체크
  7. Crop Frame과 Stretch Fill을 적절히 조정해 해상도에 맞게 설정

 

 

 

테스트

위 내용을 모두 적용했을 경우 player가 이동할 때 마다 카메라가 player의 위치를 추적하여 따라가게 된다.

따라서 player가 카메라 범위를 벗어나는 경우가 없어진다.

 

 

 

728x90
반응형