internal GameObject findClosestEnemy() { //gather potential targets HPHandler.Faction self = this.GetComponent <HPHandler>().faction; float closest = float.MaxValue; GameObject result = null; foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction))) { //skip non-enemy factions if (item == self || item == HPHandler.Faction.Neutral) { continue; } //loop through faction members var factionMembers = HPHandler.factionMembers; foreach (var enemy in factionMembers[item]) { //calc dist var dist = Vector3.Distance(this.gameObject.transform.position, enemy.gameObject.transform.position); if (dist < closest && targetValid(enemy)) { closest = dist; result = enemy; } } } return(result); }
private GameObject findClosestEnemy(float range) { //gather potential targets HPHandler.Faction self = this.GetComponent <HPHandler>().faction; GameObject target = null; float closestDistance = range; foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction))) { if (item == self || item == HPHandler.Faction.Neutral) { continue; } //loop thorugh faction members var factionMembers = HPHandler.factionMembers; foreach (var enemy in factionMembers[item]) { var dist = Vector3.Distance(this.gameObject.transform.position, enemy.gameObject.transform.position); if (dist < closestDistance && isValidTarget(enemy.gameObject)) { target = enemy.gameObject; closestDistance = dist; } } } return(target); }
internal GameObject findEnemy() { //gather potential targets HPHandler.Faction self = this.GetComponent <HPHandler>().faction; GameObject target = null; float closestDistance = maxRange; foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction))) { //skip non-enemy factions if (item == self || item == HPHandler.Faction.Neutral) { continue; } //loop through faction members var factionMembers = HPHandler.factionMembers; foreach (var enemy in factionMembers[item]) { var dist = Vector3.Distance(this.gameObject.transform.position, enemy.gameObject.transform.position); if (dist < closestDistance && dist > minRange && enemy.GetComponent <Collider>() != null) { target = enemy.gameObject; closestDistance = dist; } } } return(target); }
internal GameObject findEnemy(bool random) { if (!random) { return(findEnemy()); } //gather potential targets HPHandler.Faction self = this.GetComponent <HPHandler>().faction; var potentialEnemies = new List <GameObject>(); foreach (HPHandler.Faction item in Enum.GetValues(typeof(HPHandler.Faction))) { //skip non-enemy factions if (item == self || item == HPHandler.Faction.Neutral) { continue; } //loop through faction members var factionMembers = HPHandler.factionMembers; foreach (var enemy in factionMembers[item]) { //calc dist var dist = Vector3.Distance(this.gameObject.transform.position, enemy.gameObject.transform.position); //check dist if (dist < maxRange && dist > minRange && enemy.GetComponent <Collider>() != null) { potentialEnemies.Add(enemy); } } } //using ? operator for absolutely no reason at all, but it looks cool return(potentialEnemies.Count == 0 ? null : potentialEnemies[Random.Range(0, potentialEnemies.Count)]); }
private void Start() { ownFaction = this.GetComponent <HPHandler>().faction; }