/// <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); } }
/// <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); }
public override BehaviourTreeStatus Tick(float Time) { return(NextNode.Tick(Time)); }
// Update is called once per frame void Update() { tree.Tick(this); }