예제 #1
0
    public override bool checkProceduralPrecondition(GameObject agent)
    {
        //find nearest deposit:
        WoodDepositComponent[] woodDeposits = (WoodDepositComponent[])FindObjectsOfType(typeof(WoodDepositComponent));
        WoodDepositComponent   closest      = null;
        float closestDist = 0;

        foreach (WoodDepositComponent woodDeposit in woodDeposits)
        {
            if (woodDeposit.numWood > 0)
            {
                if (closest == null)
                {
                    closest     = woodDeposit;
                    closestDist = (woodDeposit.gameObject.transform.position - agent.transform.position).magnitude;
                }
                else
                {
                    float dist = (woodDeposit.gameObject.transform.position - agent.transform.position).magnitude;
                    if (dist < closestDist)
                    {
                        closest     = woodDeposit;
                        closestDist = dist;
                    }
                }
            }
        }

        if (closest == null)
        {
            return(false);
        }

        targetWoodDeposit = closest;
        target            = targetWoodDeposit.gameObject;

        return(closest != null);
    }
예제 #2
0
 public override void reset()
 {
     hasWood           = false;
     targetWoodDeposit = null;
 }