I've added new script to ICeSplashParticles2D scene:
extends Particles2D signal particles_finished func start() -> void: emitting = true get_tree().create_timer(lifetime).connect("timeout", self, "_on_lifetime_timeout") func _on_lifetime_timeout() -> void: emit_signal("particles_finished") queue_free()
Then I connected to it in IceFirst bullet script:
extends Bullet onready var particles := $IceSplashParticles2D onready var sprite := $Sprite func _ready() -> void: particles.connect("particles_finished", self, "queue_free") func _destroy() -> void: _disable() _audio.play() sprite.hide() particles.start()