using Godot; namespace DRPGActionGame.Player.States; public partial class IdleState : State { public override void _Ready() { base._Ready(); Player.Playback?.Travel("idle"); } public override void _Input(InputEvent @event) { if (@event.IsAction("WalkLeft") || @event.IsAction("WalkRight") || @event.IsAction("WalkUp") || @event.IsAction("WalkDown")) { Player.Direction = new(@event.GetActionStrength("WalkLeft") - @event.GetActionStrength("WalkRight"), 0, @event.GetActionStrength("WalkUp") - @event.GetActionStrength("WalkDown")); Player.ChangeState(StateFactory.States.Move); } else if (@event.IsAction("Jump")) { Player.ChangeState(StateFactory.States.Jump); } else if (@event.IsAction("Attack")) { Player.ChangeState(StateFactory.States.Attack); } } public override void _PhysicsProcess(double delta) { Vector3 velocity = Player.Velocity; velocity.X = Mathf.MoveToward(Player.Velocity.X, 0, Player.SPEED); velocity.Z = Mathf.MoveToward(Player.Velocity.Z, 0, Player.SPEED); Player.Velocity = velocity; } public override void ExitState() { // GD.Print("Exit Idle state..."); QueueFree(); } }