25 lines
729 B
C#
25 lines
729 B
C#
using Godot;
|
|
using System.Linq;
|
|
|
|
public partial class MeleeEnemy : BasicEnemy
|
|
{
|
|
[Export]
|
|
private float _speed = 0.4f;
|
|
private bool _targetingPlayer = false;
|
|
[Export]
|
|
private double _distanceToPlayer = 3;
|
|
|
|
public override void _PhysicsProcess(double delta)
|
|
{
|
|
var players = GetTree().GetNodesInGroup("Player").Cast<Character>();
|
|
if (players.Any())
|
|
{
|
|
var target = players.OrderBy(x => Position.DistanceTo(x.Position)).FirstOrDefault();
|
|
if (_targetingPlayer || Position.DistanceTo(target.Position) < _distanceToPlayer)
|
|
{
|
|
Position = Position.MoveToward(target.Position, _speed * (float)delta);
|
|
_targetingPlayer = true;
|
|
}
|
|
}
|
|
}
|
|
} |