You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | var random_rotate: 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 | 
					
						
							|  |  |  | 	random_rotate = randf_range(0, 360) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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 + random_rotate | 
					
						
							|  |  |  | 	rotation_degrees.y = particle_rotate * rate | 
					
						
							|  |  |  | 	return |