Пример #1
0
    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);
    }
Пример #2
0
 public Edible(StoreObjectReference objectReference, EdibleType edibleType_, GameObject createdObject) : base(objectReference, createdObject, type_.edible)
 {
     edible     = createdObject;
     edibleType = edibleType_;
 }