How can I make a car go a constant speed?

I am working on making a car drive, however, I don’t want it to accelerate to speed, but rather just it goes a constant speed from the beginning. I used body thrust because its the only body mover I know of that can move a model based on what it’s looking at. However, body thrust accelerates something rather than makes it move a constant speed, and as I said earlier, I don’t want that. How can I make my car go a constant speed?

Local Script:

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local ContextActionService = game:GetService("ContextActionService")
local runService = game:GetService("RunService")
local inCar = false

local moveSpeed = 0
local turnSpeed = 0

local vehicleSeat
local vehicle
local configurations
local thrust
local ang

local function onSit(Sitting, seat)
	if Sitting == true then
		if seat:IsA("VehicleSeat") then
			inCar = true
			vehicleSeat = seat
			vehicle = seat.Parent
			configurations = vehicle.Configuration
			
			ContextActionService:BindAction("flip", flipCar, false, "v")
			ContextActionService:BindAction("forward", moveForward, false, "w")
			ContextActionService:BindAction("backward", moveBack, false, "s")
			ContextActionService:BindAction("right", turnRight, false, "d")
			ContextActionService:BindAction("left", turnLeft, false, "a")
		end
	else
		inCar = false
		ContextActionService:UnbindAction("flip")
		ContextActionService:UnbindAction("forward")
		ContextActionService:UnbindAction("backward")
		ContextActionService:UnbindAction("right")
		ContextActionService:UnbindAction("left")
	end
end

function flipCar(name, inputState)
	if name == "flip" then
		if inCar then
			if inputState == Enum.UserInputState.Begin then
				local seat = vehicleSeat
				local bodyGyro = Instance.new("BodyGyro", seat)
				
				repeat wait() 
					if bodyGyro then
						seat:FindFirstChild("BodyGyro").MaxTorque = Vector3.new(1000, 0, 1000)
					end 
				until seat.Orientation.Z < 0.3 and seat.Orientation.Z > -0.1
				
				bodyGyro:Destroy()
			end
		end
	end
end

function moveForward(name, inputState)
	if name == "forward" then
		if inCar then
			if inputState == Enum.UserInputState.Begin then
				moveSpeed = 30
			end
			
			if inputState == Enum.UserInputState.End then
				moveSpeed = 0
			end
		end
	end
end

function moveBack(name, inputState)
	if name == "backward" then
		if inCar then
			if inputState == Enum.UserInputState.Begin then
				moveSpeed = -30
			end
			
			if inputState == Enum.UserInputState.End then
				moveSpeed = 0
			end
		end
	end
end

function turnRight(name, inputState)
	if name == "right" then
		if inCar then
			if inputState == Enum.UserInputState.Begin then
				turnSpeed = -configurations.TurnFactor.Value
			end
			
			if inputState == Enum.UserInputState.End then
				turnSpeed = 0
			end
		end
	end
end

function turnLeft(name, inputState)
	if name == "left" then
		if inCar then
			if inputState == Enum.UserInputState.Begin then
				turnSpeed = configurations.TurnFactor.Value
			end
			
			if inputState == Enum.UserInputState.End then
				turnSpeed = 0
			end
		end
	end
end

runService:BindToRenderStep("Update", Enum.RenderPriority.Input.Value, function()
	if inCar then
		vehicleSeat.BodyThrust.Force = Vector3.new(0, 0, -moveSpeed) * configurations.MoveFactor.Value
		vehicleSeat.BodyAngularVelocity.AngularVelocity = Vector3.new(0, turnSpeed, 0)
	end
end)

humanoid.Seated:Connect(onSit)

How about you just use math.clamp, basically you can set a minimum amount and the maximum amount

You can use BodyVelocity because it’s designed to maintain a constant velocity.

I tried that, but then when I turned the car to the right and the left, it simply faced a different direction, but still went the same direction.

Set a BodyGyro that faces the same direction the car is driving in.