You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

72 lines
1.6 KiB

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