class_name BatExtractionBat extends Sprite2D @export var speed: float = 0.2 @onready var grab_area: Area2D = $BatArea var path_follow: PathFollow2D var is_grabbed = false var is_dropped = false var pliers: Pliers func _ready(): path_follow = get_parent() as PathFollow2D pliers = get_tree().get_first_node_in_group("grabber") as Pliers func _physics_process(delta): if is_dropped: return if is_grabbed: global_position = pliers.grab_area.global_position else: path_follow.progress_ratio += delta * speed func grab_bat(): is_grabbed = true grab_area.set_deferred("monitoring", false) grab_area.set_deferred("monitorable", false) path_follow.progress_ratio = 0.0 position = Vector2.ZERO top_level = true func drop_bat(): is_dropped = true