// Start is called before the first frame update void Start() { if (transform.position.y == 4.6f) { myspawner = GameObject.Find("Alien Spawner"); } else if (transform.position.y == 3.5f) { myspawner = GameObject.Find("Alien Spawner (1)"); } else if (transform.position.y == 2.4f) { myspawner = GameObject.Find("Alien Spawner (2)"); } else if (transform.position.y == 1.3f) { myspawner = GameObject.Find("Alien Spawner (3)"); } else if (transform.position.y == 0.2f) { myspawner = GameObject.Find("Alien Spawner (4)"); } spawner = myspawner.GetComponent <AlienSpawner>(); speed = Random.Range(1f, 5f); xPos = transform.position.x; if (xPos < leftLimit) { left = true; } else { left = false; } }
public void ActivateAlienSpawner() { alienSpawnerObject = GameObject.Find("AlienSpawner"); AlienSpawner alienSpawner = alienSpawnerObject.GetComponent <AlienSpawner>(); alienSpawner.SetPanelHeightBottom(panelHeightBottom); alienSpawner.startSpawning = true; }
void AlienWaveButton() { GUI.enabled = true; if (GUILayout.Button("Send Alien Wave", ButtonStyle, GUILayout.Height(75))) { AlienSpawner.BeginInvasion(); } }
private void SpawnAliens() { var cornerOffset = ALIEN_TILE_SPAWN_RADIUS + 2; // spacing from walls var corners = new List <Tuple <int, int> > { new Tuple <int, int>(cornerOffset, cornerOffset), new Tuple <int, int>(Constants.MAP_TILES_WIDE - cornerOffset, cornerOffset), new Tuple <int, int>(Constants.MAP_TILES_WIDE - cornerOffset, Constants.MAP_TILES_HIGH - cornerOffset), new Tuple <int, int>(cornerOffset, Constants.MAP_TILES_HIGH - cornerOffset), }; var spawnPoints = corners.OrderBy(r => random.Next()).Take(2); //// Spawning aliens works on a points system: 12n-ish points on wave n, xarlins are one point, etc. // We have a hard limit of 25 (5x5) aliens per spawn-point. if we hit the limit but still have // more points left to use, um, do nothing for now. foreach (var spawnPoint in spawnPoints) { var pointsLeft = this.CurrentWaveNumber * ALIEN_POINTS_PER_WAVE; var minX = spawnPoint.Item1; var minY = spawnPoint.Item2; var maxX = spawnPoint.Item1 + 5; var maxY = spawnPoint.Item2 + 5; var iterations = 0; while (pointsLeft > 0 && iterations++ < 1000) { var x = random.Next(minX, maxX); var y = random.Next(minY, maxY); if (x >= 0 && y >= 0 && x < this.width && y < this.height && this.isWalkable[x, y] && (this.Player.TileX != x && this.Player.TileY != y)) { var alienThere = this.Aliens.SingleOrDefault(a => a.TileX == x && a.TileY == y); IEnumerable <KeyValuePair <string, int> > possibilities; possibilities = this.alienCostPoints.Where(kvp => kvp.Value <= pointsLeft); // Picked a spot with an alien. Probably because we've used all valid locations but have points left. if (alienThere != null) { possibilities = possibilities.Where(kvp => kvp.Value > alienCostPoints[alienThere.Name]); } // Make sure they don't spawn too early possibilities = possibilities.Where(kvp => this.alienMinimumWave[kvp.Key] <= this.CurrentWaveNumber); if (possibilities.Any()) { var alien = possibilities.ElementAt(random.Next(possibilities.Count())).Key; this.Aliens.Add(AlienSpawner.Spawn(alien, x, y)); pointsLeft -= this.alienCostPoints[alien]; this.Aliens.Remove(alienThere); // No points refund, sorry mate. } } } } }
public bool TakeDamage(int amount = 1) { Health -= amount; if (Health <= 0) { ExplosionSound.Play(); AlienSpawner.RemovAlien(gameObject); return(false); } UpdateHealthbar(); return(true); }
// Use this for initialization void Start() { _spriteRenderer = GetComponent <SpriteRenderer>(); _rigidBody = GetComponent <Rigidbody2D>(); alienSpawner = GameObject.FindObjectOfType <AlienSpawner>(); StartCoroutine(CycleAlienSpriteImage()); fireRate = fireRate + Random.Range(minFR, maxFR); movement = new Vector3(1, 0); _rigidBody.velocity = movement * moveSpeed; }
public void SendAlienWave() { AlienSpawner.BeginInvasion(); }