To make a vehicle stay upright you can use Legacy BodyMovers or Constraints and toggle them with a keybind such as R so that the player can flip their vehicles in case they get stuck.
To put cameras for the turrets on it, you need to make a part and weld it to the chassis. After that, you can change the players’ CurrentCamera to the turret camera by doing something like:
local player = game.Players.LocalPlayer
local UIS = game:GetService("UserInputService")
local chassis -- path to your chassis
local currentCamera = workspace.CurrentCamera
local turretCamera = chassis.TurretCamera
local selectedCamera = 1
local function changeCamera()
if selectedCamera == 1 then
selectedCamera = 2
currentCamera.CameraType = Enum.CameraType.Scriptable
currentCamera.CFrame = turretCamera.CFrame -- changes the currentcameras cframe to that of the turret
else
currentCamera.CameraType = Enum.CameraType.Custom -- changes the camera to default
end
end
local cameraKeycode = "C"
UIS.InputBegan:Connect(function(key, gp)
if gp then return end
if key.KeyCode == Enum.KeyCode[cameraKeycode] then
changeCamera()
end
end)