3D_RPG_Action_Game/Player/States/IdleState.cs

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();
}
}