Godot Version
4.5
Question
I got objects to explode with add_child explosion but I can’t get two or more objects to explode at the same time. It will only play after each one is finished. The explosion scene got shader material from its mesh.material, set as override_material, and is run by tween.
explosion.scene
func activate():
smoke_mesh.visible = true
### GET/SET SHADER MATERIAL OF EXPLOSION
var mat = smoke_mesh.mesh.surface_get_material(0)
smoke_mesh.set_surface_override_material(0, mat)
### TWEEN ANIMATION AND SIZE
var tween = create_tween()
tween.tween_property(smoke_mesh, "visible", true, 0)
tween.tween_property(mat, "shader_parameter/intensity_2", 0.0, 1.0)
tween.parallel().tween_property(smoke_mesh, "scale", Vector3(8, 8, 8), 1.0)
tween.tween_property(smoke_mesh, "visible", false, 0)
tween.tween_property(mat, "shader_parameter/intensity_2", 1.0, 0.1)
tween.parallel().tween_property(smoke_mesh, "scale", Vector3(1, 1, 1), 0.1)
tween.tween_callback(death)
Green Object.scene
func explosion_death():
visible = false
### DISABLE COLLISION
area3d_collision.set_deferred("disabled", true)
### ADD EXPLOSION TO EXPLOSION_POSITION
var explosion = preload("res://VFX/Explosion_Smoke/Explosion_Smoke_Set.tscn")
var explosion_instance = explosion.instantiate()
explosion_position.add_child(explosion_instance)
explosion_instance.position = global_position
### ACTIVATE EXPLOSION_SMOKE
if is_instance_valid(explosion_instance):
explosion_instance.activate()
When shoot at first green object the smoke tween will play while second or third green objects will not until the first one is finished.
I’ve tried set local_to_scene and/or duplicate() smoke material but made no different / wrong.
### GET GET/SET SHADER MATERIAL OF EXPLOSION
var mat = smoke_mesh.mesh.surface_get_material(0)
var mat_unique = mat.duplicate()
smoke_mesh.set_surface_override_material(0, mat_unique)
