카테고리 없음
유니티 포톤 기초
이황충
2024. 6. 19. 21:44
유니티 게임개발캠프 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);
}
}
}