0% found this document useful (0 votes)
6 views2 pages

Knight Scriptold

Uploaded by

singhsdad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views2 pages

Knight Scriptold

Uploaded by

singhsdad
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

using Godot;

public partial class Knight : CharacterBody2D


{
public int Speed = 80;
public AnimationPlayer animationPlayer;
public AnimationTree animationTree;
public enum State
{
MOVE,
SLIDE,
ROLL,
ATTACK
}

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

You might also like