diff --git a/Assets/Scripts/BaseCameraController.cs b/Assets/Scripts/BaseCameraController.cs
index 4e001d9ac888b2cc5a7dfeacf516fcb1053367c0..745a8a95fca79b50b20444154034126edef2ee92 100644
--- a/Assets/Scripts/BaseCameraController.cs
+++ b/Assets/Scripts/BaseCameraController.cs
@@ -4,6 +4,9 @@ using UnityEngine;
 public class BaseCameraController : MonoBehaviour
 {
 
+    [Header("General")]
+    [SerializeField] bool allowUserControl = true;
+
     [Header("Movement")]
     [SerializeField] float moveSpeed = 10f;
     [SerializeField] Vector2 edgeDetectionBoxInsets = new Vector2(0.1f, 0.1f);
@@ -35,6 +38,11 @@ public class BaseCameraController : MonoBehaviour
         audio.PlayOneShot(clip, volume);
     }
 
+    public void SetUserControlEnabled(bool allowUserControl)
+    {
+        this.allowUserControl = allowUserControl;
+    }
+
     void Awake()
     {
         camera = GetComponent<Camera>();
@@ -51,7 +59,7 @@ public class BaseCameraController : MonoBehaviour
 
     void Update()
     {
-        var inputZoomDelta = Input.mouseScrollDelta.y * -zoomStepSize;
+        var inputZoomDelta = allowUserControl ? Input.mouseScrollDelta.y * -zoomStepSize : 0;
         if (inputZoomDelta != 0)
         {
             zoomInterpolator.targetValue += inputZoomDelta;
@@ -69,7 +77,7 @@ public class BaseCameraController : MonoBehaviour
             waitForMouseOutsideEdges = true;
         }
         mouseMovementEdges.DrawDebug(waitForMouseOutsideEdges ? Color.red : Color.green);
-        var mouseViewportPos = camera.ScreenToViewportPoint(Input.mousePosition);
+        var mouseViewportPos = allowUserControl ? camera.ScreenToViewportPoint(Input.mousePosition) : new Vector3(0.5f, 0.5f);
         var mouseInputVector = mouseMovementEdges.GetOutOfBoundsDirection(mouseViewportPos);
         if (waitForMouseOutsideEdges && mouseInputVector.magnitude == 0)
         {