Progress on gmae setup script

This commit is contained in:
BOTAlex 2024-02-14 05:37:52 +01:00
parent 81862a21f0
commit c0d9c685ca
2 changed files with 40 additions and 13 deletions

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.SceneManagement;
@ -9,8 +10,6 @@ public class NetworkedGameSetup : NetworkBehaviour
{
[SerializeField] private GameObject PlayerPrefab;
private RopeSimulator RopeSim;
private void Start()
{
DontDestroyOnLoad(this);
@ -19,26 +18,54 @@ public class NetworkedGameSetup : NetworkBehaviour
private void SceneLoaded(string sceneName, LoadSceneMode loadSceneMode, List<ulong> clientsCompleted, List<ulong> clientsTimedOut)
{
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= SceneLoaded; // Only run once
StartSetupProcedure(clientsCompleted);
}
private void StartSetupProcedure(List<ulong> playerIds)
{
SpawnPlayers(playerIds);
GameObject[] players;
if (IsHost || IsServer)
players = SpawnPlayers(playerIds);
else
players = GetPlayers(playerIds);
InitRope(players);
}
private void SpawnPlayers(List<ulong> playerIds)
private GameObject[] GetPlayers(List<ulong> playerIds)
{
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= SceneLoaded;
GameObject[] players = new GameObject[playerIds.Count];
// Assuming only 2 palyers
if (IsHost)
for (int i = 0; i < playerIds.Count; i++)
{
ulong playerId = playerIds[i];
players[i] = NetworkManager.SpawnManager.SpawnedObjects[playerId].gameObject;
}
return players;
}
private GameObject[] SpawnPlayers(List<ulong> playerIds)
{
GameObject[] players = new GameObject[playerIds.Count];
for (int i = 0; i < playerIds.Count; i++)
{
GameObject player = Instantiate(PlayerPrefab, Vector2.up * 3, Quaternion.identity);
player.GetComponent<NetworkObject>().SpawnAsPlayerObject(playerIds[i], true);
players[i] = player;
}
return players;
}
private void InitRope(GameObject[] players)
{
RopeSimulator ropeSim = GetComponentInChildren<RopeSimulator>();
//// Assuming 2 players
//ropeSim.start = new RopeJoint(players[0].transform.position, true);
//ropeSim.start = players[1];
}
}

View File

@ -16,7 +16,7 @@ public class RopeSimulator : MonoBehaviour
private bool constrainStickMinLength;
[SerializeField]
RopeJoint start, end;
public RopeJoint start, end;
[SerializeField]
float subDivision = 50f;