Пример #1
0
    public override bool checkProceduralPrecondition(GameObject agent)
    {
        // find the nearest berry bush that we can chop our wood at
        BerryBushComponent[] bushes  = (BerryBushComponent[])UnityEngine.GameObject.FindObjectsOfType(typeof(BerryBushComponent));
        BerryBushComponent   closest = null;
        float closestDist            = 0;

        foreach (BerryBushComponent bush in bushes)
        {
            if (closest == null)
            {
                // first one, so choose it for now
                closest     = bush;
                closestDist = (bush.gameObject.transform.position - agent.transform.position).magnitude;
            }
            else
            {
                // is this one closer than the last?
                float dist = (bush.gameObject.transform.position - agent.transform.position).magnitude;
                if (dist < closestDist)
                {
                    // we found a closer one, use it
                    closest     = bush;
                    closestDist = dist;
                }
            }
        }
        if (closest == null)
        {
            return(false);
        }

        targetBerryBush = closest;
        target          = targetBerryBush.gameObject;

        return(closest != null);
    }
Пример #2
0
 public override void reset()
 {
     chopped         = false;
     targetBerryBush = null;
     startTime       = 0;
 }