This is how I would find humanoids if it isn’t a player:
script.Parent.hitbox.Touched:Connect(function(hit)
local human = hit:FindFirstAnchestorWhichIsA("Model"):FindFirstChild("Humanoid")
if human then
print("Hit "..human.Parent.Name)
end
end)
The script only detect player and not dummy because maybe there is a space in dummy’s humanoid, that why I recommended use :FindFirstChildWhichIsA("Humanoid")
Very weird.
When ever the part is touched, try print the parent of the hit to see what model touched the part. If it a dummy model, this might be a studio bug.