Rotation when encountering a car on a hill

Good morning developers !!
I am trying to make a car system with BodyMovers and not Vehicle Seat, I have almost everything finished, but there is something wrong, to do the rotation of the car when finding a cure as shown in the following example image:

I made each wheel send a Raycast downwards and then, as the PrimaryPart is joined with each of the wheels with a Weld, Change its C1 to the Raycast position, but it doesn’t go well, as to position each wheel I put its CFrame : Inverse (), I tried to use it, it doesn’t go either, I tried subtracting the C1 minus a Vector3 with X at 0 just like the Z and Y with the wheel distance with the Raycast, this is the best result, but it goes away very up, even on flat surface, what should I do?

Script:

for _, Wheel in pairs(Car.Wheels:GetChildren()) do
   	if Wheel then
   		local Raycast = workspace:Raycast(Wheel.Position, Wheel.Position - Vector3.new(0, 50, 0))
   		if Raycast then
   			local Magnitude = (Wheel.Position - Raycast.Position).magnitude
   			print(Raycast.Position, Wheel.Position)
   			Wheel.Weld.C1 -= Vector3.new(0, Magnitude, 0)
   		end
   	end
end