Hey guys I have a problem. I have a script that shoots players that aren't me and It works perfectly. But the problem is that the bullet shoots through walls and objects. Any idea why and how to make it not do it?
Here's the script:
local Rel = 0 local MaxDis = 100 local Mode = "Normal" local Lazor = Instance.new("Part") Lazor.BrickColor = BrickColor.new("really red") Lazor.Anchored = true Lazor.BottomSurface = "Smooth" Lazor.TopSurface = "Smooth" Lazor.CanCollide = false Lazor.Transparency = 0.3 Lazor.Reflectance = 0.2 local Mesh = Instance.new("CylinderMesh") Mesh.Scale = Vector3.new(0.2,1,0.2) Mesh.Parent = Lazor Mesh.Offset = Vector3.new(-0.2,0,0) function CheckHuman(Humanoid, Player) if Humanoid.Health == 0 then return false end if Player.Name == "wilsonsilva007" then return false end -- We're not gunna shoot at our owner! return true end function GetDistance(Player, C_Pos) local Character = Player.Character if Character~=nil and Mode == "Normal" then local Head = Character:findFirstChild("Head") local Human = Character:findFirstChild("Humanoid") if Head~= nil and Human~= nil then if CheckHuman(Human, Player) then local Distance_1 = Head.Position-C_Pos local Distance = Distance_1.magnitude return Distance, Head end end end return MaxDis*5, nil end function GetNearestHead() local Pos = script.Parent.Position local nearest = nil local nearestdis = MaxDis*5 local NearestHead = nil local P = game.Players:GetChildren() for i = 1, #P do local Dis, His_Head = GetDistance(P[i], Pos) if Dis<= MaxDis*5 and Dis<nearestdis then nearest = P nearestdis = Dis NearestHead=His_Head end end return NearestHead, nearestdis end function LookAt(Head) script.Parent.CFrame = CFrame.new(script.Parent.Position, Head.Position) script.Parent.Parent.Main.CFrame = script.Parent.CFrame + script.Parent.CFrame.lookVector*1.6 script.Parent.Parent.Main.CFrame = script.Parent.Parent.Main.CFrame * CFrame.Angles(math.pi/2,0,0) script.Parent.Parent.Shotpart.CFrame = script.Parent.CFrame + script.Parent.CFrame.lookVector*1.6 script.Parent.Parent.Shotpart.CFrame = script.Parent.Parent.Shotpart.CFrame * CFrame.Angles(math.pi/2,0,0) script.Parent.Parent.Scanner.CFrame = script.Parent.CFrame + script.Parent.CFrame.lookVector*1.6 script.Parent.Parent.Scanner.CFrame = script.Parent.Parent.Scanner.CFrame * CFrame.Angles(-math.pi/2,0,0) end function Shoot(Head, Distance, Damage) script.Parent.Bang.Volume = 5 script.Parent.Bang:Play() LookAt(Head) local Hum = Head.Parent:findFirstChild("Humanoid") if Hum ~= nil then Hum.Health = Hum.Health - (--[[DMG]] Hum.MaxHealth*Damage) end local Laser = Lazor:clone() Laser.Size = Vector3.new(1,Distance,1) Laser.CFrame = script.Parent.CFrame + script.Parent.CFrame.lookVector * Distance/2 Laser.CFrame = Laser.CFrame * CFrame.Angles(math.pi/2,0,0) Laser.Parent = workspace wait() Laser:remove() Rel = 1 end while true do local Head, Distance = GetNearestHead() if Head~= nil and Rel <= 0 and Distance <= MaxDis then Shoot(Head, Distance, 0.05) elseif Head ~= nil then LookAt(Head) end if Rel > 0 then Rel = Rel - 1 end wait() end