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); }
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); }
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(); }