12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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()
|