Files
hello-godot/scripts/explosion.gd
T

34 lines
950 B
GDScript

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)