From e97e4a3ba2be1dc4b48a017ccb49e659e7eb8220 Mon Sep 17 00:00:00 2001 From: wasdennnoch <leiter04@gmail.com> Date: Fri, 2 Apr 2021 23:42:34 +0200 Subject: [PATCH] On kb move, prevent mouse move until it's in clear area --- Assets/Scripts/BaseCameraController.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/BaseCameraController.cs b/Assets/Scripts/BaseCameraController.cs index 2a5d0ef..4e001d9 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); -- GitLab