diff --git a/scripts/DropsBase.gd b/scripts/DropsBase.gd index 1eb7aa2..0b78cac 100644 --- a/scripts/DropsBase.gd +++ b/scripts/DropsBase.gd @@ -1,8 +1,14 @@ extends Area2D class_name DropsBase +var witch +var player +var is_spawning = true # Called when the node enters the scene tree for the first time. func _ready() -> void: + body_entered.connect(_on_body_entered) + witch = get_node("/root/Game/Witch") + player = get_node("/root/Game/Player") _animate_spawn() pass # Replace with function body. @@ -19,14 +25,27 @@ func _get_random_landing_position() -> Vector2: return Vector2(offset_x,offset_y) func _animate_spawn() -> void: - scale = Vector2.ZERO - var size_scling = create_tween() - size_scling.tween_property(self, "scale", Vector2(1,1),0.4) var jump = create_tween() var landing = _get_random_landing_position() jump.tween_property(self, "global_position:x", landing.x, 0.2).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_QUAD) jump.parallel() - jump.tween_property(self, "global_position:y", global_position.y - 5, 0.2).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_QUAD) + jump.tween_property(self, "global_position:y", global_position.y - 20, 0.2).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_QUAD) jump.tween_property(self, "global_position:y", landing.y, 0.2).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD) - + await jump.finished + is_spawning = false +func _on_body_entered(body: Node2D) -> void: + if body == player and not is_spawning: + collect() + pass + +func collect(): + var position_drop = create_tween() + var target = witch.global_position + position_drop.tween_property(self, "global_position:y", global_position.y - 20, 0.2).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD) + position_drop.tween_property(self, "global_position:y", target.y, 0.5).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD) + position_drop.parallel() + position_drop.tween_property(self, "global_position:x", target.x, 0.5).set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_QUAD) + await position_drop.finished + var scale_tween = create_tween() + scale_tween.tween_property(self, "scale", Vector2.ZERO,0.2) diff --git a/scripts/drop_manager.gd b/scripts/drop_manager.gd index dc41531..06491bc 100644 --- a/scripts/drop_manager.gd +++ b/scripts/drop_manager.gd @@ -12,7 +12,7 @@ func _process(delta: float) -> void: pass func on_enemy_died(enemy): - drop_item(enemy) + call_deferred("drop_item", enemy) func drop_item(enemy): for entry in enemy.drop_table: