-
유니티 게임개발캠프 TIL 40일차
유니티에서 포톤을 사용해 멀티플레이어 기능 적용하기
오늘은 유니티에서 포톤을 사용해 멀티플레이어 기능을 실제로 적용해보았습니다. 아래는 예제를 통해 배운 내용을 정리한 것입니다.
포톤 설치 및 설정
- Photon Unity Networking (PUN) 패키지 설치:
- Unity Asset Store에서 Photon Unity Networking (PUN) 패키지를 검색하여 프로젝트에 추가합니다.
- Photon Cloud 계정 생성 및 설정:
- Photon Engine 웹사이트에서 계정을 생성하고, 새로운 어플리케이션을 만들어 App ID를 발급받습니다.
- Unity에서 Window > Photon Unity Networking > PUN Wizard를 열고, App ID를 입력하여 설정을 완료합니다.
간단한 멀티플레이어 게임 구현
- 네트워크 매니저 설정:
- 새로운 Empty GameObject를 생성하고 NetworkManager라고 이름을 지정합니다.
- PhotonView 컴포넌트를 추가하고, PhotonTransformView도 추가하여 네트워크에서 오브젝트의 위치를 동기화하도록 설정합니다.
- 플레이어 프리팹 생성:
- 간단한 플레이어 캐릭터 (예: Capsule)를 생성하고, 이를 프리팹으로 저장합니다.
- 프리팹에 PhotonView 컴포넌트를 추가하고, Observed Components에 PhotonTransformView를 추가합니다.
- 룸 생성 및 참가:
- NetworkManager 스크립트를 작성하여 룸을 생성하고 참가하는 기능을 구현합니다. 예를 들어:
using Photon.Pun; using UnityEngine; public class NetworkManager : MonoBehaviourPunCallbacks { public GameObject playerPrefab; void Start() { PhotonNetwork.ConnectUsingSettings(); } public override void OnConnectedToMaster() { PhotonNetwork.JoinLobby(); } public override void OnJoinedLobby() { PhotonNetwork.JoinOrCreateRoom("Room1", new Photon.Realtime.RoomOptions { MaxPlayers = 4 }, null); } public override void OnJoinedRoom() { PhotonNetwork.Instantiate(playerPrefab.name, new Vector3(0, 5, 0), Quaternion.identity, 0); } }
4. 플레이어 이동 동기화:
- 플레이어 프리팹에 이동 스크립트를 추가하여 입력에 따라 움직이도록 합니다. 예를 들어:
using UnityEngine; using Photon.Pun; public class PlayerMovement : MonoBehaviourPun { void Update() { if (photonView.IsMine) { float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); transform.Translate(movement * Time.deltaTime * 5); } } }
- Photon Unity Networking (PUN) 패키지 설치: