This commit is contained in:
2026-05-12 21:43:03 +07:00
parent 5025383676
commit a1e52f95ad
12 changed files with 995 additions and 32 deletions

View File

@@ -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")