Update
This commit is contained in:
@@ -248,6 +248,25 @@ namespace Hallucinate.UI
|
||||
{
|
||||
SendLocalMetaData(player);
|
||||
}
|
||||
|
||||
// Spawn player character if we are the server and in the game scene
|
||||
if (runner.IsServer && UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "Main Scene")
|
||||
{
|
||||
SpawnPlayer(runner, player);
|
||||
}
|
||||
}
|
||||
|
||||
private void SpawnPlayer(NetworkRunner runner, PlayerRef player)
|
||||
{
|
||||
if (_spawnedCharacters.ContainsKey(player)) return;
|
||||
|
||||
// Simple spawn logic: Host on left, Client on right
|
||||
// Using Vector3(..., 1, ...) to ensure player is above the ground
|
||||
Vector3 spawnPosition = (player == runner.LocalPlayer) ? new Vector3(-8, 1, 0) : new Vector3(8, 1, 0);
|
||||
|
||||
Debug.Log($"[BasicSpawner] Spawning player {player} at {spawnPosition}");
|
||||
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
|
||||
_spawnedCharacters.Add(player, networkPlayerObject);
|
||||
}
|
||||
|
||||
private async void SendLocalMetaData(PlayerRef player)
|
||||
@@ -297,7 +316,10 @@ namespace Hallucinate.UI
|
||||
{
|
||||
if (_spawnedCharacters.TryGetValue(player, out NetworkObject networkObject))
|
||||
{
|
||||
runner.Despawn(networkObject);
|
||||
if (networkObject != null && networkObject.IsValid)
|
||||
{
|
||||
runner.Despawn(networkObject);
|
||||
}
|
||||
_spawnedCharacters.Remove(player);
|
||||
}
|
||||
|
||||
@@ -408,9 +430,7 @@ namespace Hallucinate.UI
|
||||
{
|
||||
foreach (var player in runner.ActivePlayers)
|
||||
{
|
||||
Vector2 spawnPosition = (player == runner.LocalPlayer) ? new Vector2(-8, 0) : new Vector2(8, 0);
|
||||
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
|
||||
_spawnedCharacters.Add(player, networkPlayerObject);
|
||||
SpawnPlayer(runner, player);
|
||||
}
|
||||
}
|
||||
if (currentSceneName == "Main Scene")
|
||||
|
||||
Reference in New Issue
Block a user