Here is my BodyGyro properties:
local BodyGyro = Instance.new("BodyGyro")
BodyGyro.CFrame = PetObj["Base"].CFrame
BodyGyro.MaxTorque = Vector3.new(math.huge,math.huge,math.huge)
BodyGyro.Parent = PetObj["Base"]
and here is the part where i update the gyro and that:
function UpdateTween()
FollowTween = game.TweenService:Create(PetObj["Base"]["BodyPosition"], TweenInfo.new(0.25, Enum.EasingStyle.Linear), {Position = Player.Character["HumanoidRootPart"].CFrame.p - Vector3.new(-2, 0, -2)})
TurnTween = game.TweenService:Create(PetObj["Base"]["BodyGyro"], TweenInfo.new(0.25, Enum.EasingStyle.Linear), {CFrame = CFrame.new(PetObj["Base"].CFrame.p, Vector3.new(Player.Character["HumanoidRootPart"].Position.X, PetObj["Base"].Position.Y, Player.Character["HumanoidRootPart"].Position.Z))})
end
function UpdatePetObj()
if (Player.Character["HumanoidRootPart"].Velocity).Magnitude > 6 then
if (Player.Character["HumanoidRootPart"].CFrame.p - PetObj["Base"].CFrame.p).Magnitude > Distance * 1.5 then
FollowTween:Play()
TurnTween:Play()
end
end
I used this for help: Pet Follower v.02