internal void InvokeEnemySpawnEvent(CrunchEnemy enemy) { var ev = new EnemySpawnEventArgs { Enemy = enemy }; EnemySpawnEvent?.Invoke(ev); }
void OnEnemySpawn(EnemySpawnEvent e) { if (!m_doorState) { return; } m_doorState = false; m_closedDoor.SetActive(true); m_openDoor.SetActive(false); SoundSystem.Instance().play(m_closeSound); }
void OnEnemySpawn(EnemySpawnEvent e) { if (!m_doorState) { return; } m_doorState = false; m_animator.SetBool("Closed", true); m_light.SetActive(false); SoundSystem.Instance().play(m_closeSound); }
void NextWaveSpawn() { EnemySpawnEvent spawnEvent = remainingSpawnEvents.Dequeue(); Rect mapSize = CurrentMapSize(); float safeDist = 7; Rect safeArea = new Rect(player.transform.position.x - safeDist, player.transform.position.y - safeDist, safeDist, safeDist); int maxTries = 3; foreach (EnemySpawn spawn in spawnEvent.enemySpawns) { for (int i = 0; i < spawn.count; i++) { Vector3 position = new Vector3( Random.Range(mapSize.xMin, mapSize.xMax), Random.Range(mapSize.yMin, mapSize.yMax), 0); int tries = 0; while (safeArea.Contains(position) && tries < maxTries) { position = new Vector3( Random.Range(mapSize.xMin, mapSize.xMax), Random.Range(mapSize.yMin, mapSize.yMax), 0); tries += 1; } Enemy enemy = Instantiate(spawn.enemy, position, Quaternion.identity).GetComponent <Enemy>(); if (enemy.Type() == EnemyType.Wall) { enemy.transform.rotation = Quaternion.Euler(0, 0, Random.value * 360); } // Give the enemy a pickup to drop if (Random.value < pickupDropChance) { enemy.pickupDropPrefab = pickupTable.ChoosePickup(); } } } //Play "wave spawn" sound transform.GetChild(0).GetComponents <AudioSource>()[2].Play(); currentWave++; startedNextWave = false; }
/// <summary> /// Spawns an enemy on screen. /// </summary> /// <param name="spawnEvent">The SpawnEvent instance with all the information to spawn the enemy.</param> /// <returns>The enemy GameObject if any. null otherwise.</returns> public GameObject SpawnEnemy(EnemySpawnEvent spawnEvent) { if (spawnEvent.enemyPrefab != null) { GameObject playerShipGameObject = Toolbox.PoolManager.SpawnGameObject(spawnEvent.enemyPrefab); playerShipGameObject.transform.position = spawnEvent.enemyStartPoint; EnemyShip enemyShip = playerShipGameObject.GetComponent <EnemyShip>(); if (enemyShip != null) { enemyShip.velocity = spawnEvent.enemyVelocity; enemyShip.acceleration = spawnEvent.enemyAcceleration; enemyShip.OnShipDestroyed += OnEnemyShipDestroyed; } return(playerShipGameObject); } return(null); }
private void OnEnable() { if (GameManager.stateManager == null) { if (state != RoomState.Clear) { } EnemySemaphorControl = 0; enemySpawn = new EnemySpawnEvent(); enemySpawn += UpdateSemaphor; roomClear = new UnityEvent(); GameManager.stateManager = this; isManager = true; if (state == RoomState.Clear) { StartCoroutine(ClearInAFrame()); } } }
public object Clone() { LevelObject newLevel = new LevelObject(); newLevel.enemySpawnEvents = new EnemySpawnEvent[this.enemySpawnEvents.Length]; for (int i = 0; i < enemySpawnEvents.Length; i++) { var oldSpawnEvent = this.enemySpawnEvents[i]; EnemySpawnEvent newSpawnEvent = new EnemySpawnEvent(); newSpawnEvent.enemySpawns = new EnemySpawn[oldSpawnEvent.enemySpawns.Length]; for (int j = 0; j < oldSpawnEvent.enemySpawns.Length; j++) { newSpawnEvent.enemySpawns[j].enemy = oldSpawnEvent.enemySpawns[j].enemy; newSpawnEvent.enemySpawns[j].count = oldSpawnEvent.enemySpawns[j].count; } newLevel.enemySpawnEvents[i] = newSpawnEvent; } return(newLevel); //return this.MemberwiseClone(); }
void OnEnemySpawn(EnemySpawnEvent e) { m_livingEnemy.Add(e.enemy); }
void OnEnemySpawn(EnemySpawnEvent e) { gameObject.SetActive(false); }