open-fpsz/weapons/space_gun/projectile_explosion.gd

23 lines
641 B
GDScript

extends Node3D
@onready var fire = $Fire
@onready var area_damage : AreaDamageComponent = $AreaDamageComponent
var explosion_effect_pending : bool = false
const impulse_force = 1000;
func _ready():
fire.emitting = true
func _physics_process(_delta):
var bodies = area_damage.get_overlapping_bodies() if area_damage.monitoring else []
for body in bodies:
if body is RigidBody3D:
var direction = (body.global_position - global_position).normalized()
body.apply_central_impulse(direction * impulse_force)
area_damage.monitorable = false
area_damage.monitoring = false
await get_tree().create_timer(1.0).timeout
queue_free()