bool FindClosestLowHealthEnemy(GameObject agent) { EdibleType[] potentialEdibleObjects = GameObject.FindObjectsOfType <EdibleType>(); List <EdibleType> edibleObjectsBelow50PercentHP = new List <EdibleType>(); EdibleType closest = null; float closestDistance = 0; foreach (EdibleType potentialEdible in potentialEdibleObjects) { //find enemies below half health Health health = potentialEdible.gameObject.GetComponent <Health>(); if (health.currentHealth <= health.maxHealth * 0.5f && potentialEdible.goodFoods.Contains(ourEdibleType)) { edibleObjectsBelow50PercentHP.Add(potentialEdible); } } foreach (EdibleType edible in edibleObjectsBelow50PercentHP) { if (closest == null) { closest = edible; closestDistance = Vector2.Distance(edible.gameObject.transform.position, agent.transform.position); } else { float distance = Vector2.Distance(edible.gameObject.transform.position, agent.transform.position); if (distance < closestDistance) { closest = edible; closestDistance = distance; } } } if (closest == null) { return(false); } targetPrey = closest; target = targetPrey.gameObject; return(closest != null); }
public Edible(StoreObjectReference objectReference, EdibleType edibleType_, GameObject createdObject) : base(objectReference, createdObject, type_.edible) { edible = createdObject; edibleType = edibleType_; }