This is a visualization of what is happening. The ray seems to either ignore the soldier or miss it completely.
What solutions have you tried so far?
I have just been troubleshooting this. I know the soldier is ignored or missed. Every other basepart that touches the ray registers.
local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = {zombie}
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
while true do
local origin = zombie.Head.Position
local direction = soldier.HumanoidRootPart.Position
local raycastResult = workspace:Raycast(origin, direction)
if raycastResult then
local distance = (zombie.Head.Position - raycastResult.Instance.Position).Magnitude
local p = Instance.new("Part", workspace.Folder)
--Visualization
p.Anchored = true
p.CanCollide = false
p.Size = Vector3.new(0.1, 0.1, distance)
p.CFrame = CFrame.lookAt(zombie.Head.Position, raycastResult.Instance.Position)*CFrame.new(0, 0, -distance/2)
if raycastResult.Instance.Parent == soldier then
zombie.Humanoid:MoveTo(soldier.HumanoidRootPart.Position)
print("Target seen")
else
print(raycastResult.Instance)
print(raycastResult.Normal)
end
end
wait()
end