extends Area2D @export var speed: float = 500.0 @export var lifetime: float = 2.0 @export var damage: float = 10.0 @export_enum("AP", "HE") var ammo_type: int = 0 @export var explosion_radius: float = 100.0 var shooter_group: String = "player" func _ready(): # Connect collision signal body_entered.connect(_on_body_entered) # Delete bullet after lifetime seconds await get_tree().create_timer(lifetime).timeout queue_free() func _physics_process(delta): position += Vector2.RIGHT.rotated(rotation) * speed * delta func _on_body_entered(body): if body.is_in_group(shooter_group): return if ammo_type == 0: # AP if body.has_method("take_damage"): body.take_damage(damage) elif ammo_type == 1: # HE explode() queue_free() func explode(): # Visual effect could go here # Find all potential targets # If shooter is player, target enemies. If shooter is enemy, target player. var target_group = "enemy" if shooter_group == "player" else "player" var targets = get_tree().get_nodes_in_group(target_group) for target in targets: var distance = global_position.distance_to(target.global_position) if distance <= explosion_radius: if target.has_method("take_damage"): target.take_damage(damage)