Setting models primarypart cframe infront of player causes it to stutter when player is moving

Hello,

I am trying to make a model which is infront of the model at all times. But whenever I move the model stutters and sometimes it moves into the character.

To achieve it I am using SetPrimaryPartCFrame in a Heartbeat function so it goes the fastest.
But it stutters, how would I fix it?
I want to clarify I do not want to get involved with tools.

local Player = script.Owner.Value

local Base = script.Parent.Base

local Model = script.Parent

local Char = Player.Character

local Torso = Char.Torso

game:GetService("RunService").Stepped:Connect(function()

Model:SetPrimaryPartCFrame(CFrame.new(Torso.Position.X, Torso.Position.Y, Torso.Position.Z) * CFrame.Angles(math.rad(Torso.Orientation.X),math.rad(Torso.Orientation.Y), math.rad(Torso.Orientation.Z)))

end)

https://gyazo.com/ead2b880942ffda78345bb7f2a946604

Try tweening the model to the the new location for a smooth transition between positions

Still a bit of a delay before it starts moving, so it moves in to the character.

use RenderStepped.

30char30char30char30char

You can try using BindToRenderStep and update the model’s cframe after the character has been updated:

local rs = game:GetService("RunService")
rs:BindToRenderStep("model update", Enum.RenderPriority.Character.Value + 1, function()
    -- update model's cframe
end)