[Photon Fusion 1.1.8] Player Spawner And Create Player

Photon Network/Fusion 2023. 11. 5. 22:40
반응형

PlayerSpawner 스크립트를 생성후 다음과 같이 작성하자 

using System;
using System.Collections;
using System.Collections.Generic;
using Fusion;
using Fusion.Sockets;
using UnityEngine;

public class PlayerSpawner : MonoBehaviour, INetworkRunnerCallbacks
{
    [SerializeField] private NetworkPrefabRef playerPrefab;
    
    private void Start()
    {
        NetworkManager.Instance.SessionRunner.AddCallbacks(this);
    }

    public void OnPlayerJoined(NetworkRunner runner, PlayerRef player)
    {
        if (player == runner.LocalPlayer)
        {
            Vector3 spawnPosition = new Vector3(UnityEngine.Random.Range(1, 5), 0, UnityEngine.Random.Range(1, 5));
            runner.Spawn(playerPrefab, spawnPosition, Quaternion.identity);
        }
    }

    public void OnPlayerLeft(NetworkRunner runner, PlayerRef player)
    {
        
    }

    public void OnInput(NetworkRunner runner, NetworkInput input)
    {
        
    }

    public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input)
    {
        
    }

    public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason)
    {
        
    }

    public void OnConnectedToServer(NetworkRunner runner)
    {
        
    }

    public void OnDisconnectedFromServer(NetworkRunner runner)
    {
        
    }

    public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token)
    {
        
    }

    public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason)
    {
        
    }

    public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message)
    {
        
    }

    public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList)
    {
        
    }

    public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary<string, object> data)
    {
        
    }

    public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken)
    {
        
    }

    public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ArraySegment<byte> data)
    {
        
    }

    public void OnSceneLoadDone(NetworkRunner runner)
    {
        
    }

    public void OnSceneLoadStart(NetworkRunner runner)
    {
        
    }
}

 

RunnerPrefab에 PlayerSpawner컴포넌트를 추가 한다 

 


 

CreatePlayer

 

Prefabs폴더에 NetworkPlayer(빈 프리팹)을 생성한다 

 

NetworkPlayer를 더블클릭해 프리팹 모드로 들어가 자식으로 Cube를 생성한다 

 

NetworkPlayer를 선택해 NetworkObject 컴포넌트를 부착 한다 

 

NetworkTransform컴포넌트도 부착 한다 

 

NetworkTransform 컴포넌트의 Interpolation Target에 Cube를 할당 한다 

 

 

RunnerPrefab을 선택후 Player Spawner에 PlayerPrefab에 NetworkPlayer프리팹을 할당 한다 

 

실행한다 

 

 

빌드후 2개를 실행해보자 

 

 

 

 

반응형
: