So, i'm creating a custom physics engine (as that'd make it easier for me to manipulate the character), and I've made a fake character, which is a simple, anchored block, which'll be transparent when I'm out of testing it, anyway, I'm having a problem with the script that manipulates the physics when you're in server mode, it works on play solo, oh, and the part I'm using to set the camera to isn't floating above it, like it's supposed to.

FAKE_PLAYER.PhysicsScript (NOTE: Normally it's neater) :


game:service'RunService'.Heartbeat:connect(function()
wait()
local ray = Ray.new(
  script.Parent.CFrame.p,                          
(CFrame.new(0,-100,0).p - script.Parent.CFrame.p).unit * 1 -- 
) 
local ignore = script.Parent

local hit, position, normal = workspace:FindPartOnRay(ray, ignore)
if not hit then
script.Parent.Falling.Value=true
				
script.Parent.CFrame=script.Parent.CFrame:lerp(script.Parent.CFrame*CFrame.new(0,-1,0),.3)
else
script.Parent.Falling.Value=false
end
end)

FAKE_PLAYER.CameraPart.Script :

while wait() do
	script.Parent.CFrame=script.Parent.Parent.CFrame*CFrame.new(0, 4, 0)
end

Any suggestions?

EDIT: Maybe it's because the physics part is being cloned from a local script?