public Vector2 GetBossPos(float rad, float checkRad) { if (chara != null) { int iter = 0; while (iter < 1000) { if (chara.closestPlanet != null) { GravityBody planet = chara.closestPlanet.GetComponent <GravityBody>(); if (planet != null) { Vector2 checkVector = new Vector2(Random.Range(-1.0f, 1.0f), Random.Range(-1.0f, 1.0f)).normalized; if (!Physics2D.OverlapCircle((Vector2)chara.closestPlanet.position + checkVector * chara.closestPlanet.GetComponent <GravityBody>().gravityDistance *rad, checkRad, planet.planetLayer)) { return((Vector2)chara.closestPlanet.position + checkVector * chara.closestPlanet.GetComponent <GravityBody>().gravityDistance *rad); } } else { return(GravityBody.GetSpawnPos(rad, checkRad)); } } else { return(GravityBody.GetSpawnPos(rad, checkRad)); } } } return(Vector2.zero); }
void SpawnWave(Wave waveToSpawn) { for (int i = 0; i < enemies.Length; i++) { for (int j = 0; j < waveToSpawn.amounts[i]; j++) { Instantiate(enemies[i], GravityBody.GetSpawnPos(), MathOperations.LookAt2D(transform.position, chara.transform.position, 90)); } } chara.ConfigurePointers(); chara.hp = chara.maxHp; }
IEnumerator SpawnBoss(float delay) { music.clip = bossMusic; music.Play(); GameObject go = Instantiate(bossWavePrefab); go.transform.SetParent(messagePad.transform); yield return(new WaitForSeconds(delay)); GameObject g = Instantiate(boss, GravityBody.GetSpawnPos(), MathOperations.LookAt2D(transform.position, chara.transform.position, 90)); chara.ConfigurePointers(); chara.hp = chara.maxHp; waveIndex++; started = false; }