11extends RigidBody2D
22
3- export (int , 2 , 10 , 2 ) var blocks_per_side = 6
4- export (float ) var blocks_impulse = 150
5- export (float ) var blocks_gravity_scale = 6
6- export (float ) var debris_max_time = 5
7- export (int ) var collision_layers = 1
8- export (int ) var collision_masks = 1
9- export (bool ) var debug_mode = false
3+ export (int , 2 , 10 , 2 ) var blocks_per_side = 6
4+ export (float ) var blocks_impulse = 150
5+ export (float ) var blocks_gravity_scale = 6
6+ export (float ) var debris_max_time = 5
7+ export (bool ) var remove_debris = false
8+ export (int ) var collision_layers = 1
9+ export (int ) var collision_masks = 1
10+ export (bool ) var debug_mode = false
1011
1112var object = {}
1213
@@ -33,6 +34,7 @@ func _ready():
3334 offset = Vector2 (),
3435 parent = get_parent (),
3536 particles_name = null ,
37+ remove_debris = remove_debris ,
3638 scene = PackedScene .new (),
3739 sprite_name = null ,
3840 vframes = 1 ,
@@ -202,17 +204,17 @@ func detonate():
202204 child .z_index = 0 if randf () < 0.5 else - 1
203205
204206 var child_color = rand_range (100 , 255 ) / 255
205- var tween = Tween .new ()
206- add_child (tween )
207- tween .interpolate_property (
207+ var color_tween = Tween .new ()
208+ add_child (color_tween )
209+ color_tween .interpolate_property (
208210 child ,
209211 "modulate" ,
210212 Color (1.0 , 1.0 , 1.0 , 1.0 ),
211213 Color (child_color , child_color , child_color , 1.0 ),
212214 0.25 ,
213215 Tween .TRANS_LINEAR ,
214216 Tween .EASE_IN )
215- tween .start ()
217+ color_tween .start ()
216218
217219 child .set_mode (MODE_RIGID )
218220
@@ -225,7 +227,7 @@ func explosion():
225227 for i in range (object .blocks_container .get_child_count ()):
226228 var child = object .blocks_container .get_child (i )
227229
228- child .apply_torque_impulse ((blocks_impulse / 2 ) * blocks_per_side )
230+ child .add_torque ((blocks_impulse / 2 ) * ( blocks_per_side * rand_range ( 1.0 , blocks_per_side )) )
229231 child .apply_impulse (Vector2 (rand_range (- blocks_impulse / 2 , blocks_impulse / 2 ),\
230232 rand_range (- blocks_impulse , blocks_impulse * 2 )),\
231233 Vector2 (rand_range (- blocks_impulse / 2 , blocks_impulse / 2 ),\
@@ -239,5 +241,27 @@ func _on_debris_timer_timeout():
239241 for i in range (object .blocks_container .get_child_count ()):
240242 var child = object .blocks_container .get_child (i )
241243
242- child .set_mode (MODE_STATIC )
243- child .get_node (object .collision_name ).disabled = true
244+ if not object .remove_debris :
245+ child .set_mode (MODE_STATIC )
246+ child .get_node (object .collision_name ).disabled = true
247+ else :
248+ var color_r = child .modulate .r
249+ var color_g = child .modulate .g
250+ var color_b = child .modulate .b
251+ var color_a = child .modulate .a
252+
253+ var opacity_tween = Tween .new ()
254+ add_child (opacity_tween )
255+ opacity_tween .connect ("tween_completed" , self , "_on_opacity_tween_completed" )
256+ opacity_tween .interpolate_property (
257+ child ,
258+ "modulate" ,
259+ Color (color_r , color_g , color_b , color_a ),
260+ Color (color_r , color_g , color_b , 0.0 ),
261+ rand_range (0.0 , 1.0 ),
262+ Tween .TRANS_LINEAR ,
263+ Tween .EASE_IN )
264+ opacity_tween .start ()
265+
266+ func _on_opacity_tween_completed (obj , key ):
267+ obj .queue_free ()
0 commit comments