Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to fix problems when moving camera to collide point in ray cast?

Asked by 5 years ago

I have a fully functional third person camera script, everything works fine, except for one aspect, and that is the popper part of my script. I decided to use raycast position to identify where to move camera to if it collides with a part. Downside is, it works almost perfectly, but the camera just slightly clips through part, which in turns ruins what i wanted. Heres the popper part of the script, and is needed to note all of the function works as intended, only the popper wont work.

Camera.Focus= Character.PrimaryPart.CFrame
local Direction = (cameraCFrame.p-Character.Head.Position).Unit*((cameraPos)).Magnitude
local CheckRay = Ray.new(Character.Head.Position, Direction)
local Part, Position = game.Workspace:FindPartOnRay(CheckRay,Character,false,true)
if Part then
    --local Distance = Camera:GetLargestCutoffDistance({Character}), decided not working well either.
    local x,y,z= Camera.CFrame:ToEulerAnglesXYZ()
    Camera.CFrame= CFrame.new(Position)*CFrame.Angles(x,y,z)
end

If you need the full script, i would be glad to post it here, seeing as i most likely will make a public script. Thank you!

1 answer

Log in to vote
0
Answered by 5 years ago

Received answer on roblox dev forums. For those who seek this, here is new modified script.

Camera.Focus= Character.Head.CFrame
local Direction = (cameraCFrame.p-Character.Head.Position).Unit*((cameraPos)).Magnitude
local CheckRay = Ray.new(Character.Head.Position, Direction)
local Part, Position, face = game.Workspace:FindPartOnRay(CheckRay,Character,false,true)
if Part then
    local x,y,z= Camera.CFrame:ToEulerAnglesXYZ()
    Camera.CFrame= CFrame.new(Position)*CFrame.Angles(x,y,z)
    Camera.CFrame= Camera.CFrame+face*.15
end

By simple multiplying the final cframe, with the face normal, you can get the popper working! In my case, multiplying by .15 got it working, could be lower for you(or higher), just dont go over .5, might be far, far off.

Ad

Answer this question