Ejemplo n.º 1
0
    /// <summary>
    /// 检查程序前提条件
    /// </summary>
    /// <param name="agent"></param>
    /// <param name="bb"></param>
    /// <returns></returns>
    public override bool CheckProceduralPrecondition(GameObject agent, BlackBoard bb)
    {
        // find the nearest tree that we can chop
        //找到我们能砍掉的最近的树
        AppleTreeComponet[] trees   = (AppleTreeComponet[])bb.GetData("appleTree");
        AppleTreeComponet   closest = null;
        float closestDist           = 0;

        foreach (AppleTreeComponet tree in trees)
        {
            if (closest == null)
            {
                // first one, so choose it for now
                //第一个,现在就选择它
                closest     = tree;
                closestDist = (tree.gameObject.transform.position - agent.transform.position).magnitude;
            }
            else
            {
                // is this one closer than the last?
                //这个比最后一个更近吗?
                float dist = (tree.gameObject.transform.position - agent.transform.position).magnitude;
                if (dist < closestDist)
                {
                    // we found a closer one, use it
                    //我们找到了一个更近的,用它
                    closest     = tree;
                    closestDist = dist;
                }
            }
        }
        if (closest == null)
        {
            return(false);
        }

        targetAppleTree = closest;
        target          = targetAppleTree.gameObject;

        return(closest != null && closest.AppleNum > 0);
    }
Ejemplo n.º 2
0
 public override void reset()
 {
     eated           = false;
     targetAppleTree = null;
     startTime       = 0;
 }