Пример #1
0
    Vector3 GetRandomSpawnPosition()
    {
        if (spawnPoints != null)
        {
            if (spawnPoints.Length > 0)
            {
                bool    foundSpawner     = false;
                Vector3 newStartPosition = new Vector3();
                float   timeOut          = Time.time + 2f;

                while (!foundSpawner)
                {
                    NetworkStartPosition startPoint = spawnPoints[Random.Range(0, spawnPoints.Length)];
                    PlayerSpawnCollider  spawnPoint = startPoint.GetComponent <PlayerSpawnCollider>();

                    if (spawnPoint.isOccupied == false)
                    {
                        foundSpawner     = true;
                        newStartPosition = startPoint.transform.position;
                    }

                    if (Time.time > timeOut)
                    {
                        foundSpawner     = true;
                        newStartPosition = orginalPosition;
                    }
                }

                return(newStartPosition);
            }
        }


        return(orginalPosition);
    }
Пример #2
0
 PlayerSpawnCollider GetNearestSpawnPoint()
 {
     Collider2D[] triggerColliders = Physics2D.OverlapCircleAll(transform.position, 2f, Physics2D.AllLayers);
     foreach (Collider2D col in triggerColliders)
     {
         PlayerSpawnCollider spawnPoint = col.GetComponent <PlayerSpawnCollider>();
         if (spawnPoint != null)
         {
             return(spawnPoint);
         }
     }
     return(null);
 }
Пример #3
0
    public IEnumerator RespawnRoutine()
    {
        if (isLocalPlayer)
        {
            GameManager.Instance.panelInfo.gameObject.SetActive(false);
        }

        PlayerSpawnCollider oldSpawn = GetNearestSpawnPoint();

        transform.position = GetRandomSpawnPosition();

        if (oldSpawn != null)
        {
            oldSpawn.isOccupied = false;
        }
        GetComponent <Rigidbody2D>().velocity = Vector3.zero;
        yield return(new WaitForSeconds(3f));

        playerHealth.Reset();
    }