[Unity]11.포톤 RPG 만들기 - 한 번 보고 따라하기

안녕하세요 유랑입니다.



오늘은 애니메이션에 포톤을 어떻게 적용하는지에 대해서 배워보겠습니다.

코드와 Photon Animator View를 연동하니 이 점 유의해 주세요.




1. 간단한 네트워크 RPG 만들기



1-1) 프로젝트 생성과 포톤 설정하기



프로젝트 이름과 위치를 지정한 후 생성해 주세요.






에셋스토어에서 PUN2를 다운받고 포톤 홈페이지에서 ID를 복사하여 붙여주세요.

https://www.photonengine.com/ko-KR/Photon













이제 캐릭터와 지형을 만들겠습니다.

모두 무료를 사용할 예정이며, 원하시는 캐릭터를 다운받아 주세요.










1-2) Photon View



Photon VIew는 네트워크를 통해 객체를 식별하고 해당 객체의 상태를 동기화하는데 사용됩니다.

일반적으로, 게임이 실행 될 때 인스턴스화된 객체의 프리팹에 연결됩니다.

Photon Transform View와 Photon Animator View를 이용하면 

객체의 애니메이션과 트랜스폼값 공유도 가능해 집니다.







1-3) 포톤 로그인하기



포톤을 이용해 온라인에 접속하기전 여러가지 설정을 해야합니다.

본인의 닉네임과 게임버전 설정등 다음을 참고하여 설정해 주세요.


- PhotonNetwork.AutomaticallySyncScene => 하나의 클라이언트가 룸내의 모든 클라이언트들에게                                                                                 로드해야할 레벨을 정의

- PhotonNetwork.GameVersion => 포톤 게임버전을 설정(같은 게임버전끼리 공유가됨)

- PhotonNetwork.NickName => 클라이언트의 닉네임을 설정

- PhotonNetwork.ConnectUsingSettings => 포톤을 이용한 온라인 연결






OnConnectedToMaster()는 포톤 연결이 성공하면 불려지는 콜백 메소드입니다.





빈 오브젝트를 생성한 후 PhotonMgr로 이름을 변경하고 스크립트를 추가해 주세요.








1-4) 포톤 방생성



포톤의 방생성과 콜백되는 메소드는 다음과 같습니다.


- PhotonNetwork.JoinRandomRoom() => 생성되있는 룸에 랜덤하게 접속합니다.

- OnjoinRandomFailed() => 랜덤 접속이 실패하면 콜백되는 메소드입니다.

- PhotonNetwork.CreateRoom() => 방을 생성하고 방의 옵션정의가 가능합니다.









1-5) 캐릭터 애니메이션 설정



기존의 애니메이터의 애니메이션 상태를 다음과 같이 수정합니다.

게임이 실행되면 걷는 모션을 취하며, Attack이라는 트리거 값이 주어지면 공격모션을 취할겁니다.










게임을 실행시켜본 다음 트리거 버튼을 눌러 잘 동작하는지 확인해 주세요^^






1-6) 캐릭터 스크립트 작성



파라미터와 레이어 동기화는 Discrete로 설정한 뒤 

캐릭터 스크립트를 작성하겠습니다.

Discrete 동기화는 정보가 초당 10회 전송되는 것을 의미합니다.

키보드를 이용해서 이동과 공격이 가능하도록 해볼게요.






여기서 사용된 포톤 기능은 photonView.IsMine 정도입니다.

자신의 캐릭터만 조작이 가능해요.

같은 게임이기에 똑같은 캐릭터와 스크립트가 적용되어 있기에,

다음과 같이 적용하지 않으면 다른 플레이어의 캐릭터 조작도 가능해요...








1-7) 캐릭터 인스턴스화



플레이어의 캐릭터를 방에 접속하면 생성되도록 코드를 작성하겠습니다.

플레이어 캐릭터는 Resources 폴더에 프리팹으로 만들어 주세요.











1-8) 카메라 연결



메인카메라를 Smooth Follow를 추가하여 바로 캐릭터를 연결하고 싶지만

앞에서와 마찬가지로 이게 내 캐릭터인지 구분이 필요합니다.

스크립트상에서 캐릭터 정보를 가져와서 카메라에 적용해 볼게요^^











1-9) 코드를 이용한 정보 공유



PhotonAnimator View와 PhotonTransformView를 이용한 정보 공유가 부드럽게 처리가 되지 않기에

코드를 통해서 구현해 보도록 하겠습니다.

OnPhotonSerialView는 상태를 동기화시켜주는 메소드입니다.

나의 상태와 상대방의 상태를 맞춰주는 역할을 하는 거죠!!!

여기서는 트랜스폼값과 공격가능 여부를 공유해 볼게요.










포톤 트랜스폼과 애니메이터 스크립트는 사용하지 않으므로 비활성화 시켜주세요!!





캐릭터의 위치와 애니메이션 상태 공유가 비슷하게 공유되는걸 확인가능합니다^^






2. 마무리



오늘은 Photon Pun2를 사용하여 네트워크 RPG 게임을? 간단히 만들어 보았습니다.

게임이라고 하기에는 창피하지만 한 번의 포스팅만으로 구성하려니 생각보다 내용이 많아졌습니다.

포톤과 네트워크를 마스터하기 전까지는 계속 글을 올리며 공부해보도록 할게요.

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-Photon-


댓글

Designed by JB FACTORY