I am trying to make a FirstPersonBody Script, however, i can’t figure out a way to offset the camera properly to make it work, i will try explain it better:
this is how this is going so far:
as you can see the body takes half the screen when you look down.
a bad solution would be to offset the camera one stud up (0,1,0)
although it works you can clearly see that it makes you look taller compared to other players.
if i try to make it go one stud forward (0,0,-1) this happens
the camera goes inside the player.
Humanoid has a property that allows you to offset the camera, but it only works great when its on x or y axes, z axes makes it look choppy, which of course is not what i want.
the best solution i got so far was to offset the HumanoidRootPart Motor6D:
it is exactly what i am looking for, however since the script runs in a loop(RunService:BindToRenderStep()), checking for the Motor6D all the time don’t look like a good idea to me.
it is possible to get the same result using only the camera? (no HumanoidRootPart, no Humanoid.CameraOffset, only CurrentCamera.)
Idea: Move the camera down (0,1,0) first, apply the rotation, move the camera up (0,1,0)
In my opinion this will work because the camera is not rotating in place, but instead have a radius of 1 if that make any sense, so it will go forward when looking down. (but won’t be up 1 stud when not looking down)
not to add insult to injury but how did you achieve the stretch effect? I kinda want it lol
It looks like you are moving the camera in front of the player (regardless wether the player is looking down)
perhaps you can do a raycast from the camera forward 1 stud
then you can do if there is raycast distance then PlayerChar:GetPivot().LookVector.Unit * distance (else keep everything as is)