Combining FSMs and decision trees
Given the previous recipes' ease of implementation and learning, we can combine them to develop a powerful decision-making system with benefits from both worlds, making it a very powerful technique in many different scenarios.
Getting ready
We will learn how to make modifications and develop child classes in order to create a finite-state machine that is capable of creating complex transitions based on decision trees.
How to do it...
This recipe relies on creating a couple of child classes from the one we already know and making a little modification:
- Create a new action class that holds a reference to a state:
using UnityEngine; using System.Collections; public class ActionState : DecisionTreeNode { public State state; public override DecisionTreeNode MakeDecision() { return this; } }
- Implement a transition class that is able to hold a decision tree:
using UnityEngine; using System.Collections; public class TransitionDecision :...