- Edited
Hi, I am new to Godot.
I am trying to make enemy archer, that will detect player when they enter Area2D and start firing at the player.
The problem that occurs is that the "spaceState.IntersectRay(query);" returns a value only when the player is to the left of the enemy.
Code______________
var spaceState = GetWorld2D().DirectSpaceState;
var query = PhysicsRayQueryParameters2D.Create(this.GlobalPosition, _player.GlobalPosition);
query.Exclude = new Godot.Collections.Array<Rid> { GetNode<Area2D>("Detection Radius").GetRid() };
var result = spaceState.IntersectRay(query);
if (result != null)
{
if (result.Count > 0)
{
var collider = result["collider"].ToString();
if (collider == _player.ToString())
{
GD.Print("Shooting");
GD.Print("Hit at point: ", result["position"]);
ableToShoot = false;
shootTimer = shootTimerReset;
}
}
}