This document is about: FUSION 2-SHARED
SWITCH TO

4 - 차량 스폰하기

개요

4부에서는 각 플레이어가 접속할 때 차량을 생성하는 로직을 설명합니다. 기존 차량을 프리팹으로 변환하고, 필요한 Fusion 컴포넌트를 추가한 후, 필요시 차량을 생성하는 스크립트를 만들게 됩니다.

차량 프리팹 생성

Car 오브젝트에 NetworkObject 컴포넌트를 추가합니다. 이 컴포넌트는 오브젝트에 네트워크 ID를 부여하여 모든 피어(peer)가 이를 참조할 수 있게 해줍니다.

NetworkTransform 컴포넌트도 추가하세요. NetworkTransform은 오브젝트의 위치를 다른 클라이언트에 자동으로 동기화합니다.

CarProject 창으로 드래그하여 프리팹으로 만들고, 씬에서는 삭제합니다. 이제 차량은 생성 준비가 완료되었습니다.

차량 생성기(Car Spawner)

멀티플레이어 게임에서는 일반적으로 플레이어마다 캐릭터(또는 차량)를 생성합니다. 싱글 플레이어 프로젝트와는 달리, 인스턴스화는 Runner.Spawn이라는 특별한 메서드를 사용합니다. 이 메서드는 모든 사용자에게 프리팹을 생성해 줍니다.

차량을 생성하기 좋은 시점은 클라이언트가 세션에 접속했을 때입니다. 이를 위해 사용자 정의 스크립트가 필요합니다. CarSpawner 스크립트를 생성하고 열어 다음 코드를 추가하세요:

C#

using Fusion;
using UnityEngine;

public class CarSpawner : SimulationBehaviour, IPlayerJoined
{
    public GameObject CarPrefab;

    public void PlayerJoined(PlayerRef player)
    {
        if (player == Runner.LocalPlayer)
        {
            Runner.Spawn(CarPrefab, new Vector3(0, 1, 0), Quaternion.identity);
        }
    }
}

생성 코드는 매우 간단합니다. SimulationBehaviour를 상속하면 현재 세션에 대한 모든 정보를 담고 있는 NetworkRunner에 접근할 수 있습니다. 여기에는 로컬 플레이어의 ID도 포함됩니다.

IPlayerJoined 인터페이스는 플레이어가 세션에 접속할 때마다 호출되는 PlayerJoined 함수를 포함합니다. 이 동작은 이 스크립트가 Runner와 같은 GameObject에 있을 때 발생합니다. 이 함수는 로컬 플레이어뿐 아니라 다른 디바이스에서 접속한 모든 플레이어에 대해서도 호출됩니다.

Runner.Spawn으로 오브젝트를 생성하면 자동으로 모든 클라이언트에 복제되므로, 반드시 로컬 플레이어가 접속했을 때만 호출해야 합니다.

Prototype Runner GameObject에 CarSpawner 컴포넌트를 추가하고, 앞에서 만든 Car 프리팹을 할당하세요.

이제 차량 생성 설정이 모두 완료되었습니다.

재생(Play) 모드로 들어가면 씬에 차량이 나타납니다. 차량은 움직일 수 있지만, 다음 섹션에서 네트워크 상의 동작을 더 개선할 예정입니다.

다음 단계: 필수 예측 차량 물리 튜토리얼 5 - 차량 조정

Back to top