Partículas
Um emissor que segue o mouse, com uma textura de ponto procedural e uma rampa de cor. Partículas de CPU, que são as que o renderizador web desenha.
O editor acima está rodando este projeto. Mude uma linha e ele recarrega.
Classes do Godot usadas
CPUParticles2DGradientTexture2DGradient
O código
scripts/main.gd
extends Node
var particles: CPUParticles2D
func _ready() -> void:
_add_background()
particles = CPUParticles2D.new()
particles.amount = 400
particles.lifetime = 1.6
particles.texture = _make_dot()
particles.direction = Vector2(0, -1)
particles.spread = 30.0
particles.initial_velocity_min = 180.0
particles.initial_velocity_max = 340.0
particles.gravity = Vector2(0, 320)
particles.scale_amount_min = 0.4
particles.scale_amount_max = 1.2
particles.color_ramp = _make_ramp()
particles.position = get_viewport().get_visible_rect().size * 0.5
add_child(particles)
print('move the mouse over the game to drag the emitter')
func _process(_delta: float) -> void:
var mouse: Vector2 = get_viewport().get_mouse_position()
if get_viewport().get_visible_rect().has_point(mouse):
particles.position = mouse
func _add_background() -> void:
var background: ColorRect = ColorRect.new()
background.color = Color('#0d0f16')
add_child(background)
background.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
func _make_dot() -> GradientTexture2D:
var gradient: Gradient = Gradient.new()
gradient.set_color(0, Color(1, 1, 1, 1))
gradient.set_color(1, Color(1, 1, 1, 0))
var dot: GradientTexture2D = GradientTexture2D.new()
dot.gradient = gradient
dot.fill = GradientTexture2D.FILL_RADIAL
dot.fill_from = Vector2(0.5, 0.5)
dot.fill_to = Vector2(1.0, 0.5)
dot.width = 32
dot.height = 32
return dot
func _make_ramp() -> Gradient:
var ramp: Gradient = Gradient.new()
ramp.set_color(0, Color('#8da5f3'))
ramp.set_color(1, Color(0.98, 0.5, 0.5, 0))
return ramp