37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
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();
|
|
}
|
|
} |