I was able to achieve this effect by constantly CFraming.
I don’t have your character, but all parts are connected to each other, so you can just use something like this:
local RunService = game:GetService("RunService")
local plr = game:GetService("Players").LocalPlayer
local char = plr.Character or plr.CharacterAdded:Wait() --Get the character
local cam = workspace.CurrentCamera
local speed = 2 --CFraming speed
RunService.RenderStepped:Connect(function() --Every frame do
char:SetPrimaryPartCFrame(char:GetPrimaryPartCFrame() + Vector3.new(cam.CFrame.LookVector.X * speed,0,cam.CFrame.LookVector.Z))
--^Move towards the X and Z of the camera
end)
--This is a local script
I don’t know whether your game is 2D or 3D, so I made mine with both X and Z.
Just replace speed,0,cam.CFrame.LookVector.Z with 0 if you want it only on the X.