From 0d3c1790afba0a4821cd2d952b2129a59139cbae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Tue, 5 May 2026 12:37:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=9B=B8=E6=9C=BA):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E4=BD=8D=E7=BD=AE=E5=AF=B9=E7=9B=B8=E6=9C=BA?= =?UTF-8?q?=E5=81=8F=E7=A7=BB=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现鼠标位置影响相机偏移的功能,使相机能够根据鼠标在屏幕上的位置进行轻微偏移,提升游戏交互体验 --- components/Scenes/World.tscn | 2 ++ scripts/Tools/Managers/CameraManager.gd | 1 + scripts/Tools/MouseTool.gd | 5 +++++ scripts/Tools/MouseTool.gd.uid | 1 + 4 files changed, 9 insertions(+) create mode 100644 scripts/Tools/MouseTool.gd create mode 100644 scripts/Tools/MouseTool.gd.uid diff --git a/components/Scenes/World.tscn b/components/Scenes/World.tscn index 7100a24..9704f1a 100644 --- a/components/Scenes/World.tscn +++ b/components/Scenes/World.tscn @@ -86,6 +86,8 @@ limit_top = -1800 limit_right = 2400 limit_bottom = 1800 position_smoothing_enabled = true +drag_horizontal_enabled = true +drag_vertical_enabled = true editor_draw_limits = true script = ExtResource("5_mk7bv") constantOffset = Vector2(0, -80) diff --git a/scripts/Tools/Managers/CameraManager.gd b/scripts/Tools/Managers/CameraManager.gd index a87bff0..35f0c5d 100644 --- a/scripts/Tools/Managers/CameraManager.gd +++ b/scripts/Tools/Managers/CameraManager.gd @@ -17,6 +17,7 @@ func _physics_process(_delta): if is_instance_valid(UIState.player): position = UIState.player.position + constantOffset position += MathTool.sampleInCircle(shakeIntensity) + position += MouseTool.getPositionByScreen(Vector2.ONE * 0.5, self ) / 2 static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue): if StarterPanel.buildingShader: return diff --git a/scripts/Tools/MouseTool.gd b/scripts/Tools/MouseTool.gd new file mode 100644 index 0000000..8b8307f --- /dev/null +++ b/scripts/Tools/MouseTool.gd @@ -0,0 +1,5 @@ +class_name MouseTool + +static func getPositionByScreen(anchor: Vector2, by: Node): + var viewport = by.get_viewport() + return viewport.get_mouse_position() - viewport.get_visible_rect().size * anchor diff --git a/scripts/Tools/MouseTool.gd.uid b/scripts/Tools/MouseTool.gd.uid new file mode 100644 index 0000000..5433630 --- /dev/null +++ b/scripts/Tools/MouseTool.gd.uid @@ -0,0 +1 @@ +uid://yf2h5ni3gobm