class_name Chocolate extends Node3D const COLLECT_ANIM := "collection" const COLLECT_DURATION := 2.0 @onready var chocolateAnimation: AnimationPlayer = $ChocolateAnimation @onready var pickupSound: AudioStreamPlayer3D = $ChocolatePickupSound var _collected := false func _on_chocolate_tablet_body_entered(body: Node3D) -> void: if _collected: return if body is Walker: _give_chocolate_to(body) _collected = true func _give_chocolate_to(walker: Walker) -> void: walker.give_chocolate() _go_to.call_deferred(walker) chocolateAnimation.play(COLLECT_ANIM) chocolateAnimation.animation_finished.connect(_finish) pickupSound.play() func _go_to(walker: Walker) -> void: reparent(walker) var center_tween = create_tween() center_tween.tween_property(self, "position", walker.get_pocket_position(), COLLECT_DURATION) func _finish(animation_name: String) -> void: if COLLECT_ANIM == animation_name: # Collection is finished queue_free()