c

My solution for waiting for particles to finish

celeb

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()

This way you can change lifetime parameter of Particles2D in the Godot editor GUI and it will still work.

2 loves
Reply