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.
56 lines
1.1 KiB
56 lines
1.1 KiB
3 years ago
|
extends KinematicBody2D
|
||
|
|
||
|
|
||
|
# Declare member variables here. Examples:
|
||
|
# var a = 2
|
||
|
# var b = "text"
|
||
|
|
||
|
|
||
|
# Called when the node enters the scene tree for the first time.
|
||
|
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(-1, 0)
|
||
|
|
||
|
# inputs
|
||
|
if Input.is_action_pressed("move_up"):
|
||
|
vel.y = -1
|
||
|
facingDir = Vector2(-1, -1)
|
||
|
if Input.is_action_pressed("move_down"):
|
||
|
vel.y = 1
|
||
|
facingDir = Vector2(-1, 1)
|
||
|
if Input.is_action_pressed("move_left"):
|
||
|
vel.x = -1
|
||
|
facingDir = Vector2(-1, 0)
|
||
|
|
||
|
# 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("MoveLeft")
|
||
|
|