카테고리 없음

유니티 포톤 기초

이황충 2024. 6. 19. 21:44

유니티 게임개발캠프 TIL 40일차

유니티에서 포톤을 사용해 멀티플레이어 기능 적용하기

오늘은 유니티에서 포톤을 사용해 멀티플레이어 기능을 실제로 적용해보았습니다. 아래는 예제를 통해 배운 내용을 정리한 것입니다.

포톤 설치 및 설정

  1. Photon Unity Networking (PUN) 패키지 설치:
    • Unity Asset Store에서 Photon Unity Networking (PUN) 패키지를 검색하여 프로젝트에 추가합니다.
  2. Photon Cloud 계정 생성 및 설정:
    • Photon Engine 웹사이트에서 계정을 생성하고, 새로운 어플리케이션을 만들어 App ID를 발급받습니다.
    • Unity에서 Window > Photon Unity Networking > PUN Wizard를 열고, App ID를 입력하여 설정을 완료합니다.

간단한 멀티플레이어 게임 구현

  1. 네트워크 매니저 설정:
    • 새로운 Empty GameObject를 생성하고 NetworkManager라고 이름을 지정합니다.
    • PhotonView 컴포넌트를 추가하고, PhotonTransformView도 추가하여 네트워크에서 오브젝트의 위치를 동기화하도록 설정합니다.
  2. 플레이어 프리팹 생성:
    • 간단한 플레이어 캐릭터 (예: Capsule)를 생성하고, 이를 프리팹으로 저장합니다.
    • 프리팹에 PhotonView 컴포넌트를 추가하고, Observed Components에 PhotonTransformView를 추가합니다.
  3. 룸 생성 및 참가:
    • 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);
        }
    }
}