Skip to content

Instantly share code, notes, and snippets.

@lamarmarshall
Created March 22, 2024 13:17
Show Gist options
  • Save lamarmarshall/1df7c56b95dd8e4e1f7b495bc8ed6580 to your computer and use it in GitHub Desktop.
Save lamarmarshall/1df7c56b95dd8e4e1f7b495bc8ed6580 to your computer and use it in GitHub Desktop.
godot 4, C#, state machine
using Godot;
using System;
public partial class IdleState : Node
{
public override void _Ready()
{
base._Ready();
}
public override void _Notification(int what)
{
base._Notification(what);
if (what == GameConstants.IDLE_STATE)
{
Player characterNode = GetOwner<Player>();
characterNode.animationPlayerNode.Play(GameConstants.ANIM_IDLE);
}
}
}
using Godot;
using System;
public partial class MoveState : Node
{
public override void _Ready()
{
base._Ready();
Player characterNode = GetOwner<Player>();
characterNode.animationPlayerNode.Play(GameConstants.ANIM_MOVE);
}
public override void _Notification(int what)
{
base._Notification(what);
if(what == GameConstants.MOVE_STATE)
{
Player characterNode = GetOwner<Player>();
characterNode.animationPlayerNode.Play(GameConstants.ANIM_MOVE);
}
}
}
using Godot;
using System;
public partial class StateMachine : Node
{
[Export] private Node currentState;
[Export] private Node[] States;
public override void _Ready()
{
currentState.Notification(GameConstants.IDLE_STATE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment