38 lines
974 B
GDScript
38 lines
974 B
GDScript
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()
|