extends Node @export var human: Human @export var ray : ShapeCast2D var interactable : Node2D func _unhandled_input(event: InputEvent) -> void: if ( event.is_action("move_left") or event.is_action("move_right") or event.is_action("move_up") or event.is_action("move_down") ): human.velocityVector = Input.get_vector("move_left", "move_right", "move_up", "move_down") if event.is_action_pressed("grab"): if interactable: human.stop_interaction() human.wants_to_interact_with = interactable else: human.wants_to_grab = true else: human.wants_to_grab = false human.wants_to_interact_with = null func _process(delta) -> void: ray.target_position = human.last_facing_direction * 48 if human.last_facing_direction.y > 0 : ray.target_position = Vector2(0, 48) (ray.shape as RectangleShape2D).size = Vector2(50, 20) elif human.last_facing_direction.y < 0: ray.target_position = Vector2(0, -48) (ray.shape as RectangleShape2D).size = Vector2(50, 20) elif human.last_facing_direction.x > 0 : ray.target_position = Vector2(48, 0) (ray.shape as RectangleShape2D).size = Vector2(20, 50) else: ray.target_position = Vector2(-48, 0) (ray.shape as RectangleShape2D).size = Vector2(20, 50) interactable = null if ray.is_colliding(): var nbCollisions = ray.get_collision_count() for n in range(nbCollisions): var colider = ray.get_collider(n) as Node2D if colider != null and colider != get_parent(): interactable = colider