extends Node2D const OS_PUFF = preload("res://scenes/particles/os_puff.tscn") #reference to the particle scene func emit(caller: Node, particle: String, pos: Vector2) -> void: match(particle): "doublejump": _doublejump(caller, pos) _: printerr("no such particle found: ", particle) func _doublejump(c: Node, p: Vector2) -> void: var right_particle = OS_PUFF.instantiate() var left_particle = OS_PUFF.instantiate() left_particle.rotation_degrees = 180 right_particle.position = p left_particle.position = p c.add_child(right_particle) c.add_child(left_particle) right_particle.emitting = true left_particle.emitting = true #if you use the lifetime for timeout you can be sure it is queued free when it's done await get_tree().create_timer(left_particle.lifetime).timeout right_particle.queue_free() left_particle.queue_free()
or share this direct link: