- 개요
로컬 클라이언트에서 플레이중인 캐릭터의 위치와 애니메이션을 다른 클라이언트와 동기화하는 작업을 진행한다
Photon PUN 프레임워크에 제공하는 Photon Transform View 컴포넌트를 사용하면
캐릭터의 Transform의 변화를 네트워크에 연결된 다른 플레이어들에게 실시간으로 전달할 수 있다
따라서 해당 컴포넌트를 사용하여 프로젝트를 설계한다
- 애셋 작업
1) 플레이어 캐릭터에 대한 Photon Transform View 컴포넌트


플레이어 프리팹과 리깅이 적용되는 대상에 Photon Transform View 컴포넌트를 추가한다
플레이어 프리팹의 Photon View 컴포넌트에서 Photon Transform View 컴포넌트가 적용된 대상을 확인할 수 있다

이후 Photon View 컴포넌트의 Observable Search를 Manual로 수정하여 임의로 조작할 수 있도록 설정한다
이어서 플레이어 프리팹의 Animator 컴포넌트를 Photon View 컴포넌트에 드래그 앤 드롭한다

자동으로 추가된 플레이어 프리팹의 Photon Animator View 컴포넌트에서 Continous로 설정하여
지속적으로 Animator의 파라미터를 추적하여 동기화하도록 설정한다
이후 Photon View 컴포넌트의 Observable Search를 Auto Find All로 복구한다
2) 조준선 오브젝트에 대한 Photon Transform View 컴포넌트

플레이어 프리팹에 플레이어마다 갖고 있는 조준선 오브젝트를 추가한다

새롭게 생성한 플레이어별 조준선 오브젝트를 리깅의 기준이 되는 소스 오브젝트로 할당한다

플레이어별 조준선 오브젝트에 Photon Transform View 컴포넌트를 추가한다
- 스크립트 작업
1) PlayerLookAimRef 클래스

플레이어 프리팹에 추가한 플레이어별 조준선 오브젝트에서 사용할 PlayerLookAimRef 클래스를 생성한다
클래스의 구성은 위와 같다
- Start 함수 : 월드에 존재하는 "PlayerAim"의 이름을 가진 조준선 오브젝트를 찾고 값을 저장
- FixedUpdate 함수 : 로컬 클라이언트라면 플레이어별 조준선 오브젝트의 위치를 PlayerAim 오브젝트와 통일
2) PlayerWeaponChange 클래스

조준선의 위치에 따라 리깅을 적용하는 기존의 로직과 관련 멤버변수를 삭제한다
3) PlayerController 클래스

Start 함수에서 로컬 클라이언트가 아니라면 RigBuilder 컴포넌트를 비활성화하는 로직을 삭제한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > Photon을 사용한 멀티 플레이어 게임' 카테고리의 다른 글
| 서버 연결 - 개선) 오브젝트 관리 + 컴포넌트 참조 개선 (0) | 2026.03.23 |
|---|---|
| 서버 연결 - 최종) 무기 스포너 설계 + 무기 변경 동기화 (0) | 2026.03.17 |
| 서버 연결 - 개선) 입력 시스템 2차 개선 (0) | 2026.03.11 |
| 서버 연결 - 2) Room 입장 + 플레이어 분리 (0) | 2026.03.10 |
| 서버 연결 - 개선) 입력 시스템의 개선 (0) | 2026.03.10 |