Files
GameJam2023/Enemies/Attacks/FireAtPlayer.cs
2023-09-14 19:13:54 -07:00

34 lines
959 B
C#

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>();
projectile.Rotation = new Vector3(0, _enemy.Rotation.Y, 0);
projectile.Position = _enemy.Position;
AddChild(projectile);
_audioPlayer.Play();
}
}
}
}