2 - 씬 및 플레이어
개요
파트 2에서는 간단한 씬을 설정하는 방법과 플레이어 프리팹을 만드는 방법에 대해 설명합니다. 이 섹션의 마지막에는 연결된 각 클라이언트에 대해 플레이어 객체를 생성하는 작업 네트워크 씬이 있습니다.
씬 설정
빈 유니티 씬에서 시작합니다. 유니티의 계층 탭을 마우스 오른쪽 버튼으로 클릭하고 Fusion > Scene > Setup Networking in Scene
을 선택합니다.
이는 씬에 Prototype Runner
과 Prototype Network Start
을 추가합니다.
Prototype Runner
에는 Fusion 시뮬레이션을 실행하는 핵심 컴포넌트인Network Runner
가 포함돼 있습니다. 네트워크 이벤트 스크립트를 통해 플레이어의 세션 참여 및 세션 종료 등 다양한 네트워크 이벤트에 자신의 기능을 빠르게 연결할 수 있습니다.Prototype Network Start
은 Fusion 룸에 빠르게 가입할 수 있는 부트스트랩 GUI가 포함된 프로토타입 컴포넌트입니다.
다음으로 씬에 바닥을 추가하고 유니티의 계층 탭을 마우스 오른쪽 버튼으로 클릭한 후 3D Object > Plane
을 선택합니다. 게임 객체의 이름을 Floor
로 변경하고 위치를 (0, 0, 0)
으로 재설정합니다.
이것으로 씬 설정이 완료됐습니다.
플레이어 프리팹 생성
다음으로 플레이어 객체를 만듭니다. 계층을 마우스 오른쪽 버튼으로 클릭하고 3d Object > Capsule
을 선택합니다. 게임 오브젝트의 이름을 PlayerCharacter
로 바꿉니다.
여기에 NetworkObject
컴포넌트를 추가합니다. 이 컴포넌트는 객체에 네트워크 ID를 부여하여 모든 피어가 참조할 수 있도록 합니다.
CharacterController
의 컴포넌트를 추가합니다. 나중에 이동 코드에 의해 플레이어의 캐릭터를 이동하는 데 사용됩니다.
마지막으로 NetworkTransform
컴포넌트를 추가합니다. NetworkTransform
은 객체의 위치를 다른 클라이언트와 자동으로 동기화합니다.
플레이어 캐릭터를 프로젝트 창으로 끌어 프리팹을 만든 후 씬에서 삭제하면 플레이어 캐릭터를 스폰 할 수 있습니다.
플레이어 스폰
싱글 플레이어 게임과 달리 한 명의 플레이어 객체만 씬에 포함하는 것으로는 충분하지 않습니다. 멀티플레이어의 경우 세션에 참여하는 각 플레이어의 플레이어 객체를 생성해야 합니다. 이를 위해서는 맞춤형 스크립트가 필요합니다. PlayerSpawner
스크립트를 작성하여 엽니다. 여기에 다음 코드를 추가하십시오:
C#
using Fusion;
using UnityEngine;
public class PlayerSpawner : SimulationBehaviour, IPlayerJoined
{
public GameObject PlayerPrefab;
public void PlayerJoined(PlayerRef player)
{
if (player == Runner.LocalPlayer)
{
Runner.Spawn(PlayerPrefab, new Vector3(0, 1, 0), Quaternion.identity);
}
}
}
스폰 코드는 매우 간단합니다. IPlayerJoined
인터페이스에는 플레이어가 세션에 참여할 때마다 호출되는 PlayerJoined
함수가 있습니다. 이는 자신의 플레이어뿐만 아니라 다른 장치에서 참여하는 다른 플레이어에게도 발생합니다. 자신의 플레이어를 위해 플레이어 객체를 생성하기만 하면 됩니다. Runner.Spawn
을 사용하여 객체를 생성하면 다른 모든 클라이언트에 자동으로 복제됩니다.
SimulationBehaviour
는 로컬 플레이어의 플레이어 ID를 포함하여 현재 세션에 대한 모든 정보를 포함하는 NetworkRunner
에 액세스하는 데 사용됩니다.Prototype Runner
게임 객체에 PlayerSpawner
컴포넌트를 추가하고 PlayerCharacter
프리팹을 할당합니다.
이를 통해 플레이어 스폰이 완료됩니다. 플레이 모드로 들어가 공유 클라이언트 시작을 눌러 공유 모드로 Fusion을 시작합니다.
그 씬에 플레이어 캡슐이 등장할 것입니다. 플레이어는 아직 어떤 것과도 움직이거나 상호작용할 수 없습니다. 다음 장에서는 플레이어 움직임을 구현하여 플레이어에게 생명을 불어넣을 것입니다.
Back to top