示例#1
0
    /// <summary>
    /// Run our selected child.  If no child is selected, select one.  If can't select one, return false.
    /// </summary>
    /// <param name="tank">Tank being controlled.</param>
    /// <returns>Whether we want to continue running.</returns>
    public override bool Tick(AITankControl tank)
    {
        // Fill me in
        BehaviorTreeNode s_child = SelectChild(tank);

        if (s_child != null)
        {
            if (s_child != selected)
            {
                Deactivate(tank);
                selected = s_child;
                Activate(tank);
            }


            bool tick_val = selected.Tick(tank);
            if (tick_val == false)
            {
                Deactivate(tank);
                selected = null;
            }

            return(true);
        }

        else
        {
            return(false);
        }
    }
示例#2
0
    /// <summary>
    /// Run our selected child.  If no child is selected, select one.  If can't select one, return false.
    /// </summary>
    /// <param name="tank">Tank being controlled.</param>
    /// <returns>Whether we want to continue running.</returns>
    public override bool Tick(AIInput g)
    {
        BehaviorTreeNode next = SelectChild(g);

        //Debug.Log(next);
        if (next == null)
        {
            return(false);
        }

        if (selected != next)
        {
            Deactivate(g);
            next.Activate(g);
            selected = next;
        }
        bool response = next.Tick(g);

        if (response == false)
        {
            Deactivate(g);
            sequentialChild++;
            sequentialChild %= Children.Count;
        }
        return(response);
    }
示例#3
0
 public override BehaviourTreeStatus Tick(float Time)
 {
     return(NextNode.Tick(Time));
 }
示例#4
0
 // Update is called once per frame
 void Update()
 {
     tree.Tick(this);
 }