This repository has been archived on 2024-09-30. You can view files and clone it, but cannot push or open issues/pull-requests.
gbjam12/entities/player/player.gd

61 lines
1.3 KiB
GDScript

extends CharacterBody2D
@export var speed: float = 40
@onready var raycast: RayCast2D = $RayCast2D
const TILE_SIZE = 8
var is_moving = false
var input_dir: Vector2
var prev_input: Vector2
func _ready():
pass
func _process(delta):
_try_interact()
pass
func _physics_process(delta):
_try_move()
func _try_move():
input_dir = Vector2.ZERO
if Input.is_action_pressed("move_up"):
input_dir = Vector2.UP
elif Input.is_action_pressed("move_right"):
input_dir = Vector2.RIGHT
elif Input.is_action_pressed("move_down"):
input_dir = Vector2.DOWN
elif Input.is_action_pressed("move_left"):
input_dir = Vector2.LEFT
if input_dir and !is_moving:
raycast.target_position = input_dir * 8
if input_dir != prev_input:
prev_input = input_dir
return
var collision = raycast.get_collider()
if raycast.is_colliding():
return
is_moving = true
prev_input = input_dir
var tween = create_tween()
tween.tween_property(self, "position", position + input_dir * TILE_SIZE, 0.25)
tween.tween_callback(func():
is_moving = false
)
func _try_interact():
if Input.is_action_just_pressed("attack") and raycast.is_colliding():
var collision = raycast.get_collider()
if collision is PuzzleElement:
(collision as PuzzleElement).interact()
pass
pass