public Squad(SquadFormation formation = SquadFormation.FourFourTwo) { Formation = formation; Lineup = FormationLookup.AllowedPositions[Formation].ToDictionary(x => x.ToString(), x => (Guid?)null); Subs = new Guid?[6]; Instructions = new SquadInstructions(); LastUpdated = DateTime.Now; }
//Spawns enemies in formation private Enemy[] SpawnDefault(SquadFormation.Formation formation, Vector3[] locations, int numGeometryFaces, Vector3 originOffset, Quaternion originRotation, GameObject defaultPrefab) { if (locations != null && defaultPrefab != null) { //Create array to hold enemies Enemy[] enemies = new Enemy[locations.Length]; //Instantiate each enemy, and set it's Formation Position and Spacing for (int count = 0; count < locations.Length; count++) { //Spawn unit while getting reference - FIX ROTATION! GameObject enemyObject = (GameObject)Instantiate(defaultPrefab, locations[count], transform.rotation); // enemies[count] = enemyObject.GetComponent <Enemy>(); enemies[count].FormationPosition = locations[count]; // } //Link together references to other objects in the formation SquadFormation.LinkFormation(enemies, formation, numGeometryFaces); //Final Step - Safe to initialize the AI for (int count = 0; count < enemies.Length; count++) { int formationOrder = 0; if (count == 0) { //Set the first enemy in the list to be the leader enemies[count].SetAsLeader(); } else { Enemy leader = enemies[count]; while (!leader.IsLeader) { leader = leader.PrevInFormation; formationOrder++; } } enemies[count].FormationOrder = formationOrder; enemies[count].AI.InitAI(); } return(enemies); } return(null); }
private void SetFormationUnitPositions() { //Determine spawn locations and formation positioning for units formationPositions = SquadFormation.PickFormation(formation, numObjects, spawnDistance, numGeometryFaces, wedgeAngle); unitPositions = new Vector3[formationPositions.Length]; UpdateUnitPositions(); }
public virtual void SquadChase() { Turn(transform.position + Vector3.up * 10); transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN); }
public virtual void SquadPatrol() { Turn(SquadFormation.Position(leaderPos, FormationType, SubordinateN)); transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN); }
public override void SquadPlacement() { transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN); squadPosDir = transform.position - leaderPos.position; squadPosOffset = Vector3.Distance(transform.position, leaderPos.position);//Vector3.Magnitude(transform.position - leaderPos.position); }
public override void SquadChase() { Turn(leaderPos.rotation); transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN); }