class_name Explosion extends Node2D ## 爆炸特效:双火球缩放淡出后自动回收。 const TEX := preload("res://assets/svg/explosion.svg") var size := 1.0 var _core: Sprite2D var _ring: Sprite2D func _ready() -> void: _core = Sprite2D.new() _core.texture = TEX _core.scale = Vector2(0.2, 0.2) * size add_child(_core) _ring = Sprite2D.new() _ring.texture = TEX _ring.scale = Vector2(0.55, 0.55) * size _ring.modulate = Color(1.0, 0.55, 0.25, 0.9) add_child(_ring) var tween := create_tween() tween.set_parallel(true) tween.tween_property(_core, "scale", Vector2(1.5, 1.5) * size, 0.3) \ .set_trans(Tween.TRANS_CUBIC).set_ease(Tween.EASE_OUT) tween.tween_property(_core, "modulate:a", 0.0, 0.38) tween.tween_property(_ring, "scale", Vector2(2.6, 2.6) * size, 0.42) \ .set_trans(Tween.TRANS_QUAD).set_ease(Tween.EASE_OUT) tween.tween_property(_ring, "modulate:a", 0.0, 0.42) tween.chain().tween_callback(queue_free)