유니티 엔진 - 게임 프로젝트/Photon을 사용한 멀티 플레이어 게임

프로젝트 세팅 - 3) Cinemachine의 사용과 조준 애니메이션

monstro 2026. 3. 4. 20:48
728x90
반응형

- 개요

Cinemachine 플러그인을 추가하여 플레이어의 시점카메라를 통일한다

애니메이션 리깅을 추가하여 조준하는 동작을 연출한다

 

- 스크립트 작업 

1) PlayerLookAim 클래스

 

PlayerLookAim 클래스 마우스 커서에 따라 조준선을 움직이는 역할을 수행한다

멤버변수의 구성은 위와 같다

  • crossHair 멤버변수 : 조준선 UI
  • worldPosition 멤버변수 : 월드 좌표계
  • scenePosition 멤버변수 : 스크린 좌표계

 

 

Start 함수를 위와 같이 오버라이드하여 Game 뷰에서 마우스 커서를 숨기도록 설정한다

 

 

FixedUpdate 함수를 위와 같이 오버라이드한다

  • Input System에서 마우스 커서의 위치값을 읽어와 mousePos에 저장
  • mousePos를 기반으로 스크린 좌표계의 값을 가져와 screenPosition에 저장
  • ScreenToWorldPoint 함수를 호출하여 스크린 좌표계의 값을 월드 좌표계로 변환하고 worldPosition에 저장
  • 해당 클래스가 수식된 오브젝트의 위치worldPosition의 값으로 수정
  • 조준선 UI의 위치값mousePos의 값으로 수정

 

- 애셋 작업

1) Cinemachine + 애니메이션 리깅

1 - 1) Cinemachine 설정

 

Cinemachine Camera 컴포넌트를 위와 같이 설정한다

  • Tracking Target 속성 : 플레이어 캐릭터를 카메라가 따라다닐 대상으로 설정
  • Position Control 속성 + Rotation Control 속성 : 위와 같이 설정하여 숄더뷰 3인칭 카메라를 설정
  • Add Extension 속성 : Cinemachine Deoccluder 컴포넌트를 추가 

 

 

Cinemachine Deoccluder 컴포넌트를 위와 같이 추가하여 카메라의 충돌 처리를 진행한다

Wall 태그를 지닌 벽과 같은 오브젝트를 대상으로 충돌 처리를 진행하고 

Player 태그를 지닌 오브젝트는 무시하도록 설정한다

 

1 - 2) 애니메이션 리깅

 

플레이어 캐릭터에 Rig Setup을 선택하여 리깅 오브젝트를 추가한다

 

 

AimSpine1 오브젝트는 위와 같이 구성하였다

PlayerLookAim 컴포넌트가 수식된 오브젝트를 기준으로 Spine 본이 회전하도록 설정한다

회전 범위는 -90° ~ 90°로 설정한다

 

 

AimSpine2 오브젝트는 위와 같이 구성하였다

PlayerLookAim 컴포넌트가 수식된 오브젝트를 기준으로 Spine1 본이 회전하도록 설정한다

회전 범위는 -180° ~ 180°로 설정하여 AimSpine1보다 더 많이 회전하도록 설정한다

 

 

AimHead 오브젝트는 위와 같이 구성하였다

PlayerLookAim 컴포넌트가 수식된 오브젝트를 기준으로 Head 본이 회전하도록 설정한다

회전 범위는 -180° ~ 180°로 설정한다

 

- 최종 실행 결과

728x90
반응형