void DisplayEnemyWaves() { EnemySquadManager enemySquadManager = FindObjectOfType <EnemySquadManager>(); for (int i = 0; i < enemySquadManager.CurrentEnemyWave.EnemyBoats.Length; ++i) { if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Rock")) { StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Rock, i, enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f)); } else if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Paper")) { StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Paper, i, enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f)); } else if (enemySquadManager.CurrentEnemyWave.EnemyBoats[i].name.Contains("Scissor")) { StartCoroutine(InstantiateEnemyIcon(EnemyIcon.Scissor, i, enemySquadManager.CurrentEnemyWave.EnemyBoats.Length, i * 0.25f)); } else { } } }
public override Vector3 CalculateMove(Squad squad, List <Transform> context, EnemySquadManager squadManager) { List <Transform> filteredContext = (filter == null) ? context : filter.Filter(squad, context); //if no neighbors, return no adjustment if (filteredContext.Count == 0) { return(Vector3.zero); } //add all points together and average Vector3 avoidanceMove = Vector3.zero; int nAvoid = 0; for (int i = 0; i < filteredContext.Count; ++i) { if (Vector3.SqrMagnitude(filteredContext[i].position - squad.transform.position) < squadManager.SquareAvoidanceRadius) { ++nAvoid; avoidanceMove += (squad.transform.position - filteredContext[i].position); } } if (nAvoid > 0) { avoidanceMove /= nAvoid; } avoidanceMove.y = 0f; return(avoidanceMove); }
private void CreateSquads() { BattleManager battleManager = Toolbox.Get <BattleManager>(); List <Squad> playerSquadDefs = battleManager.GetSquadsForOwner(PlayerType.Player); List <Squad> enemySquadDefs = battleManager.GetSquadsForOwner(PlayerType.Enemy1); playerSquads = new List <SquadGroup>(); enemySquads = new List <SquadGroup>(); spawnSquadGroupsFromList(PlayerType.Player, playerSquadDefs); spawnSquadGroupsFromList(PlayerType.Enemy1, enemySquadDefs); enemySquadManager = GetComponent <EnemySquadManager>(); enemySquadManager.resetTimer(); }
public override Vector3 CalculateMove(Squad squad, List <Transform> context, EnemySquadManager squadManager) { List <Transform> filteredContext = (filter == null) ? context : filter.Filter(squad, context); //if no neighbors, return no adjustment if (filteredContext.Count == 0) { return(Vector3.zero); } //add all points together and average Vector3 cohesionMove = Vector3.zero; for (int i = 0; i < filteredContext.Count; ++i) { cohesionMove += filteredContext[i].position; } cohesionMove /= filteredContext.Count; //create offset from agent position cohesionMove -= squad.transform.position; return(cohesionMove); }
public abstract Vector3 CalculateMove(Squad squad, List <Transform> context, EnemySquadManager squadManager);