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 |