Left 4 Dead-style Spawnpoints?

Hi everyone. I need help with making a game where one person has to get to the other side of the map, and the other person tries to stop him. The person trying to stop him can choose from physical being, or paranormal. Physical being opens up several monsters to choose from. I have all the players set up, I just need some help with the classes and spawning.

Well, since you actually don’t want Left4Dead style spawnpoints but simple multiplayer spawnpoints, you can use something like that:

// C#
// SpawnPoint.cs
using UnityEngine;
using System.Collections.Generic;
using System.Linq;

public enum Team
{
    Survivor,
    Infected
}

public class SpawnPoint : MonoBehaviour
{
    // players should be on custom layer 8 so they can be
    // detected if they block a spawn point
    private static int m_PlayerLayer = 8;
    
    // range around the spandpoint which should be empty to use this spawn point
    private static float m_ClearRadius = 2.0f;
    
    // Set in the inspector
    public Team team = Team.Survivor;
    
    public bool IsThisPointClear()
    {
        var players = Physics.OverlapSphere(transform.position, m_ClearRadius, 1 << m_PlayerLayer);
        return players.Length <= 0;
    }
    public static SpawnPoint FindFreeSpawnPoint(Team aTeam)
    {
        var spawns = FindObjectsOfType(typeof(SpawnPoint)).Cast<SpawnPoint>().Where(O => O.team == aTeam).ToList();
        while (spawns.Count > 0)
        {
            int i = Random.Range(0,spawns.Count);
            if (spawns*.IsThisPointClear())*

return spawns*;*
spawns.RemoveAt(i);
}
return null;
}
}
Just place some empty gameobjects in the scene, attach this script and select the team for each spawnpoint.
Now you can simply use this when ever you need a spawn point:
var SP = SpawnPoint.FindFreeSpawnPoint(Team.Survivor);
if (SP == null)
{
Debug.LogError(“All spawns occupied and / or not enough spawn points”);
return;
}
Instantiate(playerPrefab, SP.transform.position, SP.transform.rotation);