How would i make my boat drivable on gerstner waves

HI I have recently bought a boyancy and seamless Gerstner Wave system. With it i can make objects rock along with the waves. But I wonder how I would make my Boats/objects driveable.

  1. What is the issue? Include screenshots / videos if possible!

I have tried to used other boats in the toolbox to use their drive mechanics but my boat end up just stuck. I dont really know why becuase this is the first time I have tried making vechiles in Roblox. Anyways I know it´s possible becuase if I go into the Current server and move the boat it does move and rocks along the waves.

Heres what I meant:
2023-12-28 11-40-39 (streamable.com)

Here is how the boyancy system works:
2023-12-28 11-46-10 (streamable.com)
The code

while not _G.WavesLoaded do
wait()
end
wait(3)

local Ship = script:WaitForChild(“Ship”):Clone()
Ship.Parent = game.Workspace

local Main = Ship.Main

Main:SetNetworkOwner(nil)
while true do
local FrontY = _G.GetHeight((Main.CFrameCFrame.new(0,0,-40)).Position)
local BackY = _G.GetHeight((Main.CFrame
CFrame.new(0,0,50)).Position)

local FrontP = Vector3.new(Ship.Main.Front.Position.X,FrontY,Ship.Main.Front.Position.Z)
local BackP = Vector3.new(Ship.Main.Back.Position.X,BackY,Ship.Main.Back.Position.Z)

local RightY = _G.GetHeight((Main.CFrame*CFrame.new(10,0,0)).Position)
local LeftY = _G.GetHeight((Main.CFrame*CFrame.new(-10,0,0)).Position)

local Dif = FrontP-BackP
local Mid = BackP+Dif/2

local ShipHeight = _G.GetHeight(Main.Position)

local x,y,z = Main.CFrame:ToOrientation()

Main.BodyPosition.Position = Vector3.new(0,ShipHeight+3,0)


local AngX = math.atan2((FrontY-BackY), 90)
local AngZ = math.atan2((RightY-LeftY), 20)
Main.BodyGyro.CFrame = CFrame.Angles(0,y,0) * CFrame.Angles(AngX,0,AngZ)


game:GetService("RunService").Stepped:Wait()

end