So my friend, KiHeros, told me that I should use CFrame. The only problem is, I DOESN'T WORK. Here is the script:
game.Players.PlayerAdded:connect(function(player)
player.CharacterAdded:connect(function(char)
char.Humanoid.WalkSpeed = 16
for _, thing in pairs(char:GetChildren()) do
if thing.ClassName == "Hat" then
print("doi")
thing:remove()
end
end
local torso = char.Torso
local backTarget = game.ServerStorage.Target:Clone()
local frontTarget = game.ServerStorage.Target:Clone()
frontTarget.CFrame = torso.CFrame + CFrame.new(0, 0, 1.2)
frontTarget.Parent = char
backTarget.CFrame = torso.CFrame - CFrame.new(0, 0, 1.2)
backTarget.Parent = char
--[[
The problem is that we can't actually get the target to stick to the torso. AND WE ARE USING A UNION AS A TARGET. I CANT WELD UNIONS. IMPOSSIBLE.
--]]
repeat
frontTarget.CFrame = torso.CFrame + CFrame.new(0, 0, 1.2)
frontTarget.Rotation = torso.Rotation + Vector3.new(90, 0, 0)
backTarget.CFrame = torso.CFrame - CFrame.new(0, 0, 1.2)
backTarget.Rotation = torso.Rotation + Vector3.new(90, 0, 0)
wait(0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001)
until player.Character.Humanoid.Health == 0 -- Probably going to be glitchy but try it.
end)
end)
In my output, I get:
16:26:51.035 - Workspace.Script:13: bad argument #2 to '?' (Vector3 expected, got CFrame) 16:26:51.036 - Script 'Workspace.Script', Line 13 16:26:51.036 - Stack End
Could you help? Thanks.

2 comments
Just change the last parts of the CFrame to Vector3.new() instead CFrame.new()
YOU JUST FIXED IT! Here, take a rep fro your service.