This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

2 - 씬 그리고 플레이어

개요

Fusion 102 Shared에서는 간단한 씬을 설정하는 방법과 플레이어 프리팹을 만드는 방법을 설명합니다. 이 섹션의 끝에는 연결된 각 클라이언트에 대해 플레이어 객체를 생성하는 네트워크 된 작업 씬이 표시됩니다.

씬 설정하기

빈 유니티 씬에서부터 시작합니다. 유니티에서 Hierarchy 탭을 마우스 오른쪽 버튼으로 클릭하고 Fusion > Setup > Networking을 선택합니다.

add networking

이것은 씬에 Prototype RunnerPrototype Network Start을 추가합니다.

add networking
  • Prototype Runner는 Fusion 시뮬레이션을 실행하는 핵심 컴포넌트인 Network Runner를 포함하고 있으며, Network Events 스크립트를 통해 플레이어의 세션 가입이나 탈퇴 등 다양한 네트워크 이벤트에 기능을 빠르게 연결할 수 있습니다.
  • Prototype Network Start은 Fusion 룸에 빠르게 합류할 수 있도록 부트스트랩 GUI가 포함된 프로토 타이핑 컴포넌트입니다.

다음으로 씬에 바닥을 추가하고 유니티의 Hierarchy 탭을 마우스 오른쪽 버튼으로 클릭한 후 3D Object > Plane을 선택합니다. 게임 객체의 이름을 Floor로 변경하고 위치를 (0, 0, 0)으로 재설정합니다.

add networking

그러면 씬 설정이 완료됩니다.

플레이어 프리팹 생성하기

다음으로 플레이어 객체를 만듭니다. Hierarchy를 마우스 오른쪽 단추로 클릭하고 CreateEmpty를 선택합니다. 게임 객체의 이름을 PlayerCharacter로 변경합니다.

여기에 NetworkObject 컴포넌트를 추가합니다. 이 컴포넌트는 모든 피어가 참조할 수 있도록 객체에 네트워크 ID를 부여합니다.

컴포넌트의 Destroy When State Authority Leaves를 선택합니다. 이 설정은 Fusion이 해당 객체를 제어하는 클라이언트(StateAuthority)가 떠날 때 객체를 소멸시킵니다. 많은 게임에서 이는 플레이어 객체를 유지하고 다시 연결하면 플레이어에게 다시 할당할 수 있기 때문에 의도된 동작이 아니지만 이 샘플에서 사용됩니다.

Allow State Authority Override을 선택 취소합니다. 이 설정은 다른 클라이언트가 네트워크 객체를 제어할 수 있도록 허용합니다. 이 객체는 플레이어 객체이므로 항상 동일한 클라이언트가 해당 객체를 제어하기를 원합니다. 다른 모든 설정은 그대로 유지하십시오.

CharacterController 컴포넌트를 추가합니다. 이 컴포넌트는 나중에 이동 코드에서 플레이어 캐릭터를 이동하는 데 사용됩니다.

다음으로 NetworkTransform 컴포넌트를 추가합니다.

현재 플레이어 객체에는 아직 비주얼이 없습니다. Fusion에서는 비주얼과 관련된 모든 것이 네트워크 객체의 자식인 별도의 게임 객체에 올려집니다. 이 게임 객체는 간섭 대상 이라고 불립니다. 이를 통해 객체를 부드럽게 이동할 수 있습니다.

간섭 대상 객체는 플레이어 객체를 표시하는 것과 관련된 모든 것을 포함해야 합니다. 따라서 MeshRenderers, Animators, Audiosources 및 Particle Systems와 같은 컴포넌트입니다.

Hierarchy를 마우스 오른쪽 단추로 클릭하고 3d Object > Capsule을 선택합니다. 게임 객체의 이름을 Interpolation Target으로 변경하고 Capsule Collider를 제거합니다.

add networking

PlayerCharacter 객체의 NetworkTransform에서 InterpolationTarget 필드를 Interpolation Target 게임 객체로 설정합니다.

add networking

PlayerCharacterProject 창으로 끌어 프리팹을 만들고 씬에서 삭제합니다. 그러면 플레이어 캐릭터가 생성될 준비가 됩니다.

플레이어 스폰

단일 플레이어 게임과 달리 씬에 단일 플레이어 객체가 있는 것만으로는 충분하지 않습니다. 멀티 플레이어의 경우 세션에 참여하는 각 플레이어에 대해 플레이어 객체를 생성해야 합니다. 이를 위해서는 사용자 지정 스크립트가 필요합니다. 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, player); 
        }
    }
}

생성 코드는 매우 간단합니다. IPlayerJoined 인터페이스에는 플레이어가 플레이어와 같은 게임 오브젝트에 있으면 세션에 참여할 때마다 호출되는 PlayerJoined 함수가 있습니다. 이는 자신의 플레이어뿐만 아니라 다른 기기에서 참여하는 다른 플레이어에게도 발생합니다. 플레이어 객체를 생성하기 위해서만 필요합니다. 오브젝트가 Runner.Spawn으로 생성되면 다른 모든 클라이언트에 자동으로 복제됩니다.

SimulationBehaviour 는 로컬 플레이어의 player ID를 포함한 현재 세션에 대한 모든 정보를 담고 있는 NetworkRunner에 접근하는 데 사용됩니다.

PlayerSpawner 게임 오브젝트에 Prototype Runner 컴포넌트를 추가하고 플레이어 프리팹을 할당합니다.

이로써 플레이어의 스폰은 완전히 준비가 되었습니다. 플레이 모드로 진입하여 공유 클라이언트 시작을 누르면 공유 모드로 Fusion이 시작됩니다. 플레이어 캡슐이 씬에 나타납니다. 플레이어는 이동하거나 어떤 것과도 상호 작용할 수 없습니다. 다음 장에서는 플레이어의 움직임을 구현하여 플레이어에 활력을 불어넣을 것입니다.

다음 공유 모드 기본 3 - 이동 및 카메라

Back to top