extends Node3D @export var item : Resource @export var item_name : String @export var item_price : int @onready var anim_player = $AnimationPlayer @onready var vend_ray = $VendRay @onready var label_3d = $Label3D var active = true var level_control # Called when the node enters the scene tree for the first time. func _ready(): level_control = self.get_node("../") # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): pass func interact(): if active == true: if level_control.money >= item_price: level_control.money -= item_price anim_player.play("vend") label_3d.text = "vending..." else: var original_text = label_3d.text label_3d.text = "too poor" await get_tree().create_timer(2.0).timeout label_3d.text = original_text func vend(): var item_vend = item.instantiate() item_vend.position = vend_ray.global_position item_vend.transform.basis = vend_ray.global_transform.basis item_vend.linear_velocity += vend_ray.global_transform.basis * Vector3(0,0,3) active = false label_3d.text = "offline" get_parent().add_child(item_vend)