private void SpawnEnemyPack(Vector2 position) { EnemyPack pack = GetPackType(); for (int i = 0; i < pack.enemies.Length; i++) { Vector2 randomSpawnPosition = GetRandomPosition(position); Vector2 spawnPosition = GetCleanSpawnPosition(randomSpawnPosition); Instantiate(pack.enemies[i], spawnPosition, Quaternion.identity); } }
private void InitializeEnemyPacks(IEnumerable <Enemy> enemies) { this.enemyPacks = new List <EnemyPack>(); EnemyPack currEnemyPack = null; for (int enemyPackIndex = 0; enemyPackIndex < InitialData.UnitData.EnemyPacks; enemyPackIndex++) { int toTake = InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks; int toSkip = this.enemyPacks.Count * toTake; currEnemyPack = new EnemyPack(enemies.Skip(toSkip).Take(toTake).ToList()); currEnemyPack.CanMove = true; this.enemyPacks.Add(currEnemyPack); } }
private static void SaveEnemiesPacks(Room room) { room.enemiesContainers.Clear(); for (int i = 0; i < room.enemiesParent.childCount; i++) { Transform enemiesContainer = room.enemiesParent.GetChild(i); EnemyPack pack = new EnemyPack(); pack.name = enemiesContainer.name; pack.container = enemiesContainer.gameObject; room.enemiesContainers.Add(pack); enemiesContainer.gameObject.SetActive(false); } }
private void Move(EnemyPack enemyPack, GameTime gameTime) { bool toMoveDown = false; if (enemyPack.Leader.PositionX >= InitialData.Hud.ScreenWidth - InitialData.UnitData.EnemyWidth - InitialData.UnitData.EnemyWidth || enemyPack.Leader.PositionX <= InitialData.UnitData.EnemySpeedX) { toMoveDown = true; if (enemyPack.Direction == Direction.Right) { enemyPack.Direction = Direction.Left; enemyPack.Leader = enemyPack.Enemies.First(); } else if (enemyPack.Direction == Direction.Left) { enemyPack.Direction = Direction.Right; enemyPack.Leader = enemyPack.Enemies.Last(); } } foreach (var enemy in enemyPack.Enemies) { enemy.Update(gameTime); if (enemyPack.Direction == Direction.Right) { enemy.SpeedX = InitialData.UnitData.EnemySpeedX; } else if (enemyPack.Direction == Direction.Left) { enemy.SpeedX = -InitialData.UnitData.EnemySpeedX; } else if (!toMoveDown) { enemy.SpeedY = 0; } if (toMoveDown) { enemy.SpeedY = InitialData.UnitData.EnemySpeedY; } } }
// [MenuItem("Tools/Save Enemy Pack")] private static void SaveEnemiesPacks() { Room room = Selection.activeTransform.root.GetComponent <Room>(); room.enemiesContainers.Clear(); for (int i = 0; i < room.enemiesParent.childCount; i++) { Transform enemiesContainer = room.enemiesParent.GetChild(i); EnemyPack pack = new EnemyPack(); pack.name = enemiesContainer.name; pack.container = enemiesContainer.gameObject; room.enemiesContainers.Add(pack); enemiesContainer.gameObject.SetActive(false); } PrefabUtility.ReplacePrefab(room.gameObject, PrefabUtility.GetPrefabParent(room.gameObject), ReplacePrefabOptions.ConnectToPrefab); }
private void InitializeEnemyPacks(IEnumerable<Enemy> enemies) { this.enemyPacks = new List<EnemyPack>(); EnemyPack currEnemyPack = null; for (int enemyPackIndex = 0; enemyPackIndex < InitialData.UnitData.EnemyPacks; enemyPackIndex++) { int toTake = InitialData.UnitData.EnemiesCount / InitialData.UnitData.EnemyPacks; int toSkip = this.enemyPacks.Count * toTake; currEnemyPack = new EnemyPack(enemies.Skip(toSkip).Take(toTake).ToList()); currEnemyPack.CanMove = true; this.enemyPacks.Add(currEnemyPack); } }