extends AnimatedSprite export(PackedScene) var object_scene: PackedScene = null var is_player_inside: bool = false var is_opened: bool = false var has_key: bool = false onready var animation_player: AnimationPlayer = get_node("AnimationPlayer") onready var tween: Tween = get_node("Key/Tween") func _ready() -> void: assert(object_scene!=null) animation_player.play("closed") $Key/KeySprite.visible = false func _input(event: InputEvent) -> void: if is_player_inside and not is_opened: is_opened = true animation_player.play("open") _drop_object() func _drop_object() -> void: #print($Key.position) $Key/KeySprite.visible = true tween.interpolate_property($Key, "position", Vector2(0,0), Vector2(0, -10), 1.0, Tween.TRANS_QUAD, Tween.EASE_OUT) tween.start() yield(tween, "tween_completed") $Key/KeySprite.visible = false func _on_Area2D_player_entered(_player: KinematicBody2D) -> void: is_player_inside = true func _on_Area2D_player_exited(_player: KinematicBody2D) -> void: is_player_inside = false