I’ve really been frustrated on trying to make a 100% working poppercam, since Roblox’s clips through parts with mouse lock enabled.
I’ve been stuck for about 5 hours trying to get it 100%. Basically, I’m at 95%. Currently mine pretty much works but no matter what, it slightly misses collisions if you line it up right. I’d say like exactly 90 degrees.
Does anyone know how to fix this? Moving the raycast direction point to the left and right doesn’t seem to work. Plus, it doesn’t really look as smooth as the default roblox one because the orientation doesn’t stay the same.
What I’m talking about:
Code:
local function collisionFunc(part)
return (part.CanCollide and part.Transparency < 1 and not part:FindFirstAncestor("Cars") and not part:IsDescendantOf(char) and not part.Parent:FindFirstChild("Humanoid"))
end
local function cast(ray)
local destination = ray.Origin + ray.Direction
-- draw multiple raycasts concatenated to each other until no hit / valid hit found
while ray.Direction.magnitude > 0.001 do
local part, pos, norm, mat = workspace:FindPartOnRayWithIgnoreList(ray, {char})
if not part or collisionFunc(part) then
return part, pos, norm, mat
end
local start = pos + ray.Direction.Unit * 0.001
ray = Ray.new(start, destination - start)
end
end
rs.RenderStepped:Connect(function(dt)
local camCF = camera.CFrame
local ray = Ray.new(head.CFrame.p, (camCF.p - head.CFrame.p))
local _, _, _, xx, yx, zx, xy, yy, zy, xz, yz, zz = camCF:GetComponents()
local hit, pos, norm = cast(ray)
if hit then
print(hit.Name)
camera.CFrame = CFrame.new(pos.X, pos.Y, pos.Z, xx, yx, zx, xy, yy, zy, xz, yz, zz)
end
end)
Any help is extremely appreciated. This has been stumping me for too long, I feel like I’m not getting anything done and going nowhere. My problem is that it doesn’t pick up the collision if you line it up precisely.