void UpdateDistance() { if (visibleCollider == null || visibleOuterCollider == null) { return; } CalculateCameraViewColliders(); if (debugStopZoom) { return; } float farthest_from_center = CalculateFarthestSignificanObjectFromCenter(); float zoom_out_radius = visibleOuterCollider.radius; float zoom_in_radius = visibleCollider.radius; //zoom out -- not allowed with only one object if (significantObjects.Count > 1 && farthest_from_center > zoom_out_radius) { _zoom_in_delay_time = 0.0f; ZoomState = CameraZoomState.Out; float adjust_distance = farthest_from_center - zoom_out_radius; ZoomCamera(adjust_distance); } //or zoom in -- not allowed with only one object //tighten up the view focus else if (significantObjects.Count > 1 && cameraMinZoomDistance < farthest_from_center && farthest_from_center < zoom_in_radius && _zoom_in_delay_time >= cameraZoomInDelay) { ZoomState = CameraZoomState.In; float adjust_distance = farthest_from_center - zoom_in_radius; ZoomCamera(adjust_distance); } //or zoom to default //tighten up the view focus else if (significantObjects.Count == 1 && Mathf.Abs(defaultViewDistance - currentViewDistance) > .001f && _zoom_in_delay_time >= cameraZoomInDelay) { ZoomState = CameraZoomState.In; float adjust_distance = defaultViewDistance - currentViewDistance; ZoomCamera(adjust_distance); } //no change else { if (_zoom_in_delay_time < cameraZoomInDelay) { _zoom_in_delay_time += Time.deltaTime; } ZoomState = CameraZoomState.Stable; } }
void ZoomingOut() { if (cam.fieldOfView < initialFov) { cam.fieldOfView += ZoomSpeed; } else { state = CameraZoomState.Static; } }
void ZoomingIn() { if (cam.fieldOfView > zoomTarget) { cam.fieldOfView -= ZoomSpeed; } else { state = CameraZoomState.Static; } }
public void ZoomOut() { state = CameraZoomState.ZoomOut; }
public void ZoomIn(float fovModifier) { zoomTarget = initialFov - fovModifier; state = CameraZoomState.ZoomIn; }