Skip to content

Commit 2b97c20

Browse files
committed
Added remove_debris, fixed some variable names and changed torque
1 parent 1649909 commit 2b97c20

File tree

1 file changed

+38
-14
lines changed

1 file changed

+38
-14
lines changed

explode_object.gd

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
extends 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

1112
var 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

Comments
 (0)