Knight Scriptold
Knight Scriptold
State state;
public override void _Ready()
{
base._Ready();
animationPlayer = GetNode<AnimationPlayer>("AnimationPlayer");
animationTree = GetNode<AnimationTree>("AnimationTree");
animationTree.Active = true;
}
public void GetInput()
{
var stateMachine =
GetNode<AnimationTree>("AnimationTree").Get("parameters/playback").As<AnimationNode
StateMachinePlayback>();
Vector2 input_vec = Input.GetVector("ui_left", "ui_right", "ui_up",
"ui_down");
Velocity.X = input_vec * Speed;
input_vec = input_vec.Normalized();
animationTree.Set("parameters/Idle/blend_position", input_vec);
animationTree.Set("parameters/Run/blend_position", input_vec);
animationTree.Set("parameters/Attack/blend_position", input_vec);
animationTree.Set("parameters/Roll/blend_position", input_vec);
animationTree.Set("parameters/Slide/blend_position", input_vec);
if (input_vec != Vector2.Zero)
{
stateMachine.Travel("Run");
}
else
{
stateMachine.Travel("Idle");
}
if (Input.IsActionJustPressed("attack"))
{
state = State.ATTACK;
}
else if (Input.IsActionJustPressed("roll"))
{
state = State.ROLL;
}
else if (Input.IsActionJustPressed("slide"))
{
state = State.SLIDE;
}
}
public void _AttackState()
{
var stateMachine =
GetNode<AnimationTree>("AnimationTree").Get("parameters/playback").As<AnimationNode
StateMachinePlayback>();
stateMachine.Travel("Attack");
}
public void RollState()
{
var stateMachine =
GetNode<AnimationTree>("AnimationTree").Get("parameters/playback").As<AnimationNode
StateMachinePlayback>();
stateMachine.Travel("Roll");
MoveAndSlide();
}
public void SlideState()
{
var stateMachine =
GetNode<AnimationTree>("AnimationTree").Get("parameters/playback").As<AnimationNode
StateMachinePlayback>();
stateMachine.Travel("Slide");
MoveAndSlide();
}
public void _AttackAnimationFinished()
{
state = State.MOVE;
}
public void RollAnimationFinished()
{
state = State.MOVE;
}
public void SlideAnimationFinished()
{
state = State.MOVE;
}
public override void _PhysicsProcess(double delta)
{
GetInput();
MoveAndSlide();
switch (state)
{
case State.MOVE:
MoveAndSlide();
break;
case State.SLIDE:
SlideState();
break;
case State.ROLL:
RollState();
break;
case State.ATTACK:
_AttackState();
break;
}
}