A behavior tree plugin for action games.
In many cases we want the behavior tree have continuous state capabilities. For example, during a character is casting an action, we need this behavior tree focus on this action and no need to check or toggle states in partial branches.
A RUNNING
status is added for indicating that this node is running continuously.
https://gsioteam.github.io/ActionGame/
Action nodes is used to execute specific actions.
Override action
method to implement the behavior.
You can use yield
in action
method, the state will
be RUNNING
until action
method is complete.
func action(tick):
bodis = []
# The returned state will be Status.RUNNING until animation completed.
yield(tick.target.play_anim(animation), "completed")
return Status.SUCCEED
In a tick
if the action
is still in running, running
method will be invoked.
If can_cancel
returns true
. The children nodes
will be ran, and if any child returns not
Status.FAILED, move focus to that child.
A condition node, returns FAILED
while the result
of test
method is false
. Otherwise the child node
will be ran. The test
method will not be invoked while
the child node is in RUNNING
state.
Select a target node, and the behavior of this link node is same as the target node.
Move focus to target node.
Totaly same as Selector node. But if a child node
returns RUNNING
, that child node will get focus.
And the selecting behavior will continue after that
child node is complete (No longer in RUNNING
state).
Run children nodes sequentially. Next child node
will be ran after prev child node is complete
(No longer in RUNNING
state).
Run the selected child node.