extends Node2D var _pickup var _distance var _direction var _emitters: Array[CPUParticles2D] = [] func init(distance: float, direction: Vector2, res: GameResource) -> void: _distance = distance _direction = direction _pickup = res func _ready() -> void: if _emitters.size() < 10: var particles = CPUParticles2D.new() particles.amount = 8 particles.spread = 8 * (_distance / 128) particles.material = ParticleProcessMaterial.new() particles.damping_max = _distance * -2.5 particles.damping_min = _distance * -2.55 particles.gravity = Vector2.ZERO particles.direction = _direction particles.initial_velocity_max = _distance * 2.25 particles.initial_velocity_min = _distance * 2.2 particles.lifetime = 1.65 add_child(particles) _emitters.append(particles) else: for i in range(1, _emitters.size()): _emitters[i].queue_free() _emitters.resize(1) ResourceManager.pickup(_pickup) func _on_particles_timer_timeout() -> void: _ready()