extends KinematicBody2D var moveSpeed : int = 140 var interactDist : int = 70 var vel = Vector2() var facingDir = Vector2() onready var rayCast = $RayCast2D onready var anim = $AnimatedSprite func _physics_process (delta): vel = Vector2() # inputs if Input.is_action_pressed("move_up"): vel.y = -1 facingDir = Vector2(0, -1) if Input.is_action_pressed("move_down"): vel.y = 1 facingDir = Vector2(0, 1) if Input.is_action_pressed("move_left"): vel.x = -1 facingDir = Vector2(-1, 0) if Input.is_action_pressed("move_right"): vel.x = 1 facingDir = Vector2(1, 0) # normalize the velocity to prevent faster diagonal movement vel = vel.normalized() # move the player move_and_slide(vel * moveSpeed, Vector2.ZERO) manage_animations() func play_animation (anim_name): if anim.animation != anim_name: anim.play(anim_name) func manage_animations (): if vel.x > 0: play_animation("MoveRight") elif vel.x < 0: play_animation("MoveLeft") elif vel.y < 0: play_animation("MoveUp") elif vel.y > 0: play_animation("MoveDown") elif facingDir.x == 1: play_animation("IdleRight") elif facingDir.x == -1: play_animation("IdleLeft") elif facingDir.y == -1: play_animation("IdleUp") elif facingDir.y == 1: play_animation("IdleDown")