extends KinematicBody2D var moveSpeed : int = 180 var vel = Vector2() var facingDir = Vector2() onready var rayCast = $RayCast2D onready var anim = $AnimatedSprite func _ready(): pass func _physics_process(delta): handle_interactions() handle_movements() func handle_interactions(): if Input.is_action_just_pressed("ui_accept"): for body in $Area2D.get_overlapping_areas(): if body.has_method("show_dialogue"): body.show_dialogue() return func handle_movements(): 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") # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): # pass