//Will assign each grunt enemy within the scene a movement type based upon their distance to the player objects void AssignTypes() { grunts = new List <GameObject>(); for (int i = 0; i < enemyObjects.Count; i++) { IEnemy currentEnemyInterface = (IEnemy)enemyObjects[i].GetComponent(typeof(IEnemy)); EnemyType currentEnemyType = currentEnemyInterface.ReturnEnemyType(); if (currentEnemyType == EnemyType.Grunt) { grunts.Add(enemyObjects[i]); } } int sortedGrunts = 0; while (grunts.Count > sortedGrunts) { float distance = 100000.0f; int selectedGrunt = 0; for (int i = 0; i < grunts.Count; i++) { Vector3 pos = grunts[i].transform.position; float enemyDistance = Vector3.Distance(pos, player1.transform.position); if (Vector3.Distance(pos, player2.transform.position) < enemyDistance) { enemyDistance = Vector3.Distance(pos, player2.transform.position); } if (enemyDistance < distance) { distance = enemyDistance; selectedGrunt = i; } } if (sortedGrunts < roomInformation.waves.maxmimumSpeed - 1) { SCR_GruntSpiderAI gruntClass = grunts[selectedGrunt].GetComponent <SCR_GruntSpiderAI>(); STR_GruntTypes maxSpeedType = roomInformation.gruntSpeedTypes[0]; gruntClass.SetGrunt(maxSpeedType.speed, maxSpeedType.enemyType, maxSpeedType.priority); } else if (sortedGrunts >= (roomInformation.waves.maxmimumSpeed - 1) && sortedGrunts < ((roomInformation.waves.maxmimumSpeed - 1) + roomInformation.waves.middleSpeed)) { SCR_GruntSpiderAI gruntClass = grunts[selectedGrunt].GetComponent <SCR_GruntSpiderAI>(); STR_GruntTypes maxSpeedType = roomInformation.gruntSpeedTypes[1]; gruntClass.SetGrunt(maxSpeedType.speed, maxSpeedType.enemyType, maxSpeedType.priority); } else { SCR_GruntSpiderAI gruntClass = grunts[selectedGrunt].GetComponent <SCR_GruntSpiderAI>(); STR_GruntTypes maxSpeedType = roomInformation.gruntSpeedTypes[2]; gruntClass.SetGrunt(maxSpeedType.speed, maxSpeedType.enemyType, maxSpeedType.priority); } grunts.RemoveAt(selectedGrunt); sortedGrunts++; } }
void OnEnable() { grunt = (SCR_GruntSpiderAI)target; if (grunt.setAttackRange <= 0) { grunt.setAttackRange = grunt.baseAttackRange; } if (grunt.setEnemyRange <= 0) { grunt.setEnemyRange = grunt.baseEnemyRange; } }