Is there a property to change or view how much the player is zoomed in

In roblox, when we use our scroll wheele, it zooms in or out, how do i tell how much the player have zoomed in their camera. Also is there any property the can be read to do this and when changed, it changes the players zoom level?

Well u can probably set the minzoom and maxzoom to the same value for a short time which sets their zoom at that value, correct me if anyone finds anything better…

When you scroll, there’s no zoom property, roblox actually just moves your camera further or closer to the subject based on the mouse delta, you can see this in the camera modules:

function BaseCamera:SetCameraToSubjectDistance(desiredSubjectDistance: number): number
	local lastSubjectDistance = self.currentSubjectDistance

	-- By default, camera modules will respect LockFirstPerson and override the currentSubjectDistance with 0
	-- regardless of what Player.CameraMinZoomDistance is set to, so that first person can be made
	-- available by the developer without needing to allow players to mousewheel dolly into first person.
	-- Some modules will override this function to remove or change first-person capability.
	if player.CameraMode == Enum.CameraMode.LockFirstPerson then
		self.currentSubjectDistance = 0.5
		if not self.inFirstPerson then
			self:EnterFirstPerson()
		end
	else
		local newSubjectDistance = math.clamp(desiredSubjectDistance, player.CameraMinZoomDistance, player.CameraMaxZoomDistance)
		if newSubjectDistance < FIRST_PERSON_DISTANCE_THRESHOLD then
			self.currentSubjectDistance = 0.5
			if not self.inFirstPerson then
				self:EnterFirstPerson()
			end
		else
			self.currentSubjectDistance = newSubjectDistance
			if self.inFirstPerson then
				self:LeaveFirstPerson()
			end
		end
	end

	-- Pass target distance and zoom direction to the zoom controller
	ZoomController.SetZoomParameters(self.currentSubjectDistance, math.sign(desiredSubjectDistance - lastSubjectDistance))

	-- Returned only for convenience to the caller to know the outcome
	return self.currentSubjectDistance
end
function BaseCamera:StepZoom()
	local zoom: number = self.currentSubjectDistance
	local zoomDelta: number = CameraInput.getZoomDelta()

	if math.abs(zoomDelta) > 0 then
		local newZoom

		if zoomDelta > 0 then
			newZoom = zoom + zoomDelta*(1 + zoom*ZOOM_SENSITIVITY_CURVATURE)
			newZoom = math.max(newZoom, self.FIRST_PERSON_DISTANCE_THRESHOLD)
		else
			newZoom = (zoom + zoomDelta)/(1 - zoomDelta*ZOOM_SENSITIVITY_CURVATURE)
			newZoom = math.max(newZoom, FIRST_PERSON_DISTANCE_MIN)
		end

		if newZoom < self.FIRST_PERSON_DISTANCE_THRESHOLD then
			newZoom = FIRST_PERSON_DISTANCE_MIN
		end

		self:SetCameraToSubjectDistance(newZoom)
	end

	return ZoomController.GetZoomRadius()
end

These are called in ClassicCamera:Update(delta) and I’m assuming the resulting CFrame is what is assigned to the camera’s CFrame.

If you want a zoom-like property, you can use FieldOfView.

I could have used the camera module scripts but there was one issue with one of those ones.
In the CameraModule inside PlayerModule, at the very last line it doesnt returns the class or the singleton object, but rather just an empty table, could be a mistake by devs, but till then I dont think so there is any other way out.

It’s intentional, it’s to make sure developers can’t require the module

Why is that? if the devs (us) could require those scripts, wouldnt it be more efficient and save our time and code?

I don’t know. Maybe it’s to encourage us to create our own systems when we do not like something about the default one.

Or maybe it’s because roblox doesn’t like exposing internal scripts. Core scripts are no longer open source, internal api members don’t have any documentation… so this would make sense.

Creating your own system is probably more efficient, because you can add what you need meanwhile roblox needs to add a lot more because it is a general system.