So I have a pretty basic script here.
local NewPet = script.Parent
NewPet.CanCollide = false
local PetPos = Instance.new("BodyPosition", NewPet)
local PetGyro = Instance.new("BodyGyro", NewPet)
PetGyro.MaxTorque = Vector3.new(400000,400000,400000)
local Owner = '14zanderbilt'
while wait(0.01) do
wait()
local OwnerObj = workspace:WaitForChild(Owner)
local OwnerPos = OwnerObj.HumanoidRootPart.Position
local StopAt = ((OwnerPos - NewPet.Position).magnitude - 5) * 100000
PetPos.P = StopAt
PetPos.Position = OwnerPos + Vector3.new(-3,5,3)
PetGyro.CFrame = OwnerObj.HumanoidRootPart.CFrame
end
Tho only problem is, that when I have a too big of a "pet", it falls out of the world. Any ideas? Please note that the script is a server script, and that it works with a "light"/small "pet".

12 comments
is it serverscript?
Yes.
Well what I was thinking is that you could use localscript and then use game:GetService("RunService").RenderStepped:Connect() but it may not work in server
I would prefer it to be a server script.
Plus, my "pet" is falling out the world. How would a turning it into a local script stop that?
I don't know because I don't think it will work on Server. But I think you can make CanCollide true.
It still falls. Not through the baseplate, but it just falls.
But where is the pet located? On the baseplate? If it is, try the run function so that you can see exactly what is going on.
Why does it matter where the pet is located!?!? It just falls through the stupid floor.
Is the baseplate's CanCollide property false?
No lol.
And if it was, I would would fall through the floor.