using System.Linq; using Godot; public partial class FireAtPlayer : Timer { [Export] private BasicEnemy _enemy; [Export] private PackedScene _fireProjectile; [Export] private double _distanceToPlayer = 3; [Export] private AudioStreamPlayer _audioPlayer; public void OnFireAtPlayer() { var players = GetTree().GetNodesInGroup("Player"); if (players.Any()) { var convertedPlayers = players.Select(x => (Node3D)x); var target = convertedPlayers.OrderBy(x => _enemy.Position.DistanceTo(x.Position)).FirstOrDefault(); if (_enemy.Position.DistanceTo(target.Position) < _distanceToPlayer) { var projectile = _fireProjectile.Instantiate(); projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0); projectile.Position = _enemy.Position; AddChild(projectile); _audioPlayer.Play(); } } } }