2023-02-14 16:07:11 +01:00
2023-02-14 16:25:49 +01:00
2023-02-14 16:07:11 +01:00
2023-02-14 16:07:11 +01:00
2023-02-14 16:07:11 +01:00

Description

TODO

How to use

  • Add a Node2D node named "StateMachine" with the script state_machine.gd
  • Initialize the states, initial state and conditions:
	$StateMachine.add_state("idle")
	$StateMachine.add_state("hurt")
	$StateMachine.add_state("dead")
	$StateMachine.set_init_state("idle")
	$StateMachine.add_transition("idle", "hurt", [], "fire")
	$StateMachine.add_transition("hurt", "dead", ["has_stuff_been_handled", "is_dead"])
	$StateMachine.add_transition("hurt", "idle", ["has_stuff_been_handled"])
  • Trigger an event
	$StateMachine.trigger("fire")
  • Add a condition: it's just a func returning a bool
    def has_stuff_been_handled():
        return true
  • Add callbacks for state entering/update/exiting: just add the state name in on_XXXXX_state_YYYY()
    func on_idle_state_enter():
        pass

    func on_idle_state_update(delta):
        pass

    func on_idle_state_exit():
        pass
  • Enabling debug mode (logs when changing states)
    $StateMachine.set_debug_enabled(true)
  • Get the current state
    $StateMachine.get_current_state()
  • Get the last known state (before the current one)
    $StateMachine.get_last_state()

Credits

icon: made by Freepik from https://www.flaticon.com, license: Creative Commons BY 3.0

Description
Godot pure-script FSM addon
Readme 210 KiB
Languages
GDScript 100%