open-fpsz/components/explosive_damage_component.gd

16 lines
505 B
GDScript

class_name ExplosiveDamageComponent extends Area3D
@export var damage : int = 100
@export var impulse_force : int = 1000
func _physics_process(_delta):
for body in get_overlapping_bodies():
if body is RigidBody3D:
var direction = (body.global_position - global_position).normalized()
body.apply_central_impulse(direction * impulse_force)
for area in get_overlapping_areas():
if area is HealthComponent and is_multiplayer_authority():
area.damage.rpc(damage)
set_physics_process(false)