diff --git a/Assets/Scripts/BaseCameraController.cs b/Assets/Scripts/BaseCameraController.cs index 2a5d0ef27608fc9ff868352edcf67f02f83b8d4b..4e001d9ac888b2cc5a7dfeacf516fcb1053367c0 100644 --- a/Assets/Scripts/BaseCameraController.cs +++ b/Assets/Scripts/BaseCameraController.cs @@ -20,6 +20,7 @@ public class BaseCameraController : MonoBehaviour new Rigidbody2D rigidbody; InsetCameraEdges mouseMovementEdges; + bool waitForMouseOutsideEdges = false; Interpolator zoomInterpolator; Interpolator moveXInterpolator; Interpolator moveYInterpolator; @@ -63,11 +64,20 @@ public class BaseCameraController : MonoBehaviour inputVector.x = Input.GetAxisRaw("Horizontal"); inputVector.y = Input.GetAxisRaw("Vertical"); - if (inputVector.magnitude == 0) + if (inputVector.magnitude != 0) + { + waitForMouseOutsideEdges = true; + } + mouseMovementEdges.DrawDebug(waitForMouseOutsideEdges ? Color.red : Color.green); + var mouseViewportPos = camera.ScreenToViewportPoint(Input.mousePosition); + var mouseInputVector = mouseMovementEdges.GetOutOfBoundsDirection(mouseViewportPos); + if (waitForMouseOutsideEdges && mouseInputVector.magnitude == 0) + { + waitForMouseOutsideEdges = false; + } + if (!waitForMouseOutsideEdges && inputVector.magnitude == 0) { - var mouseViewportPos = camera.ScreenToViewportPoint(Input.mousePosition); - mouseMovementEdges.DrawDebug(); - inputVector = mouseMovementEdges.GetOutOfBoundsDirection(mouseViewportPos); + inputVector = mouseInputVector; } moveXInterpolator.targetValue = inputVector.x; moveYInterpolator.targetValue = inputVector.y; @@ -139,10 +149,9 @@ public class BaseCameraController : MonoBehaviour Gizmos.DrawLine(worldEdges.topLeft, worldEdges.bottomLeft); } - public void DrawDebug() + public void DrawDebug(Color color) { var worldEdges = GetWorldEdges(0); - var color = Color.magenta; Debug.DrawLine(worldEdges.bottomLeft, worldEdges.bottomRight, color); Debug.DrawLine(worldEdges.bottomRight, worldEdges.topRight, color); Debug.DrawLine(worldEdges.topRight, worldEdges.topLeft, color);