Hierarchical State Machine for Unity. Most likely I will rewrite it multiple times in the future but for now it suits my needs.
- Rewrite everything
If you have Git on your computer, you can open Package Manager indside Unity, select "Add package from Git url...", and paste link https://github.com/IntoTheDev/Hierarchical-State-Machine-for-Unity.git
or
Open the manifest.json file of your Unity project. Add "com.intothedev.ai": "https://github.com/IntoTheDev/Hierarchical-State-Machine-for-Unity.git"
public class TestStateMachine : HierarchicalStateMachine { [SerializeField] private float _timeInPatrol = 1f; [SerializeField] private float _timeInIdle = 3f; protected override StateMachine Setup() { var patrolState = new PatrolState(transform, speed: 5f, randomizeStartSpeed: true); var emptyState = new Empty(); var stateMachine = new StateMachine() .Configure(startState: patrolState) .AddTransition(patrolState, emptyState, new WaitFor(waitFor: 1f), reversed: false) .AddTransition(emptyState, patrolState, new WaitFor(waitFor: 3f), reversed: false); return stateMachine; } }