From 4d9d566b2fc3d164ec092b64c5c17e02c99ffaf2 Mon Sep 17 00:00:00 2001 From: Marco Date: Thu, 13 Mar 2025 15:01:21 +0100 Subject: [PATCH] Rudimentary mouse aiming --- .../Actors/KeyboardInputProvider.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Scripts/Components/Actors/KeyboardInputProvider.cs b/Scripts/Components/Actors/KeyboardInputProvider.cs index 977526e7..bb55656d 100644 --- a/Scripts/Components/Actors/KeyboardInputProvider.cs +++ b/Scripts/Components/Actors/KeyboardInputProvider.cs @@ -34,6 +34,9 @@ public partial class KeyboardInputProvider : InputProvider [Export] private StringName _inventoryActionName = "inventory"; [Export] private StringName _pauseActionName = "pause"; + private enum AimInputMethod { RightStick, Mouse } + private AimInputMethod _lastUsedInput = AimInputMethod.RightStick; + public override Vector2 GetMovementInput() { return Input.GetVector(LeftAxisName, RightAxisName, UpAxisName, DownAxisName); @@ -41,7 +44,20 @@ public partial class KeyboardInputProvider : InputProvider public override Vector2 GetAimInput() { - return GetRightStickInput(); + Vector2 rightStickInput = GetRightStickInput(); + Vector2 mouseInput = GetMouseAimInput(); + + // Determine which input method to use + if (rightStickInput != Vector2.Zero) + { + _lastUsedInput = AimInputMethod.RightStick; + } + else if (mouseInput != Vector2.Zero) + { + _lastUsedInput = AimInputMethod.Mouse; + } + + return _lastUsedInput == AimInputMethod.RightStick ? rightStickInput : mouseInput; } private Vector2 GetRightStickInput() @@ -51,6 +67,17 @@ public partial class KeyboardInputProvider : InputProvider Input.GetAxis(UpAimName, DownAimName) ); } + + private Vector2 GetMouseAimInput() + { + //Camera2D camera = GetViewport().GetCamera2D(); + //if (camera == null) return Vector2.Zero; // Ensure there's a valid camera + + //Vector2 mouseScreenPos = GetViewport().get_local_mouse_position(); + Vector2 mouseWorldPos = this.GetGlobalMousePosition(); + + return mouseWorldPos - this.GlobalPosition; // Get direction vector + } public override bool GetActionJustPressed(string action) {