i’ve scripted a combat system. and i’ve made a bot which does combat so i can test the damage and things.
but the bot only detects you once and if you’re still stay still it will ignore you till you move
but the when it’s done by the player. it detects every hit, so i’m confused i thought blockcast was supposed to do one or the other not both.
now i don’t feel comfortable using this as my main detection for combat. usually i would just change the detection method, but i’ve seen posts on the forum highly praise the performance and responsiveness of raycast. and i wanted that for my combat.
is anyone able to explain this behaviour?
This is the detection code
Detection = function(player)
local root = player.Character.HumanoidRootPart
local params = RaycastParams.new()
params.FilterDescendantsInstances = {player.Character,nil}
params.FilterType = Enum.RaycastFilterType.Exclude
local start = os.time()
print("Looking for target")
local targetfound = false
while not targetfound do
local direction = root.CFrame.LookVector * 20
local result1 = workspace:Blockcast(root.CFrame *CFrame.new(0,0,-root.Size.Z/2),root.Size * 2,root.CFrame.LookVector * 20,params)
CastVisual:Blockcast(root.CFrame *CFrame.new(0,0,-root.Size.Z/2),root.Size * 2,direction, params)
local enemyhumanoid = result1 and result1.Instance.Parent:FindFirstChild("Humanoid") or false
if enemyhumanoid then
targetfound = enemyhumanoid.Parent
end
if os.time() - start >= .4 then break end
task.wait()
end
return targetfound
end,