extends Decal class_name ParticleDecal @export var lifetime: float = 1 @export var gradient: Gradient @export var scale_curve: Curve @export var particle_rotate: int @export var size_random: float #0-1 0为不随机 1为随机0~2倍 var lifetime_now: float var size_scale: float func on_ready() -> void: var scale_sample: float = scale_curve.sample(0) size_random = clamp(size_random, 0, 1) size_scale = randf_range(1-size_random, 1+size_random) scale = Vector3(scale_sample, 1, scale_sample) * size_scale func on_process(delta: float) -> void: lifetime_now += delta var rate: float = lifetime_now / lifetime if rate > 1: return #色带 if gradient: modulate = gradient.sample(rate) else: modulate.a = 1 - rate #缩放曲线 if scale_curve: var scale_sample: float = scale_curve.sample(rate) scale = Vector3(scale_sample, 1, scale_sample) * size_scale #旋转 rotation_degrees.y = particle_rotate * rate return