From 626fc3d7529669247104d162f19d6b58fcb2fe49 Mon Sep 17 00:00:00 2001 From: Simon Ward Date: Mon, 26 Jan 2026 15:45:50 +1300 Subject: [PATCH] camera: added smooth camera zooming --- player/camera_gimbal.gd | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/player/camera_gimbal.gd b/player/camera_gimbal.gd index 7275a20..9fd3de0 100644 --- a/player/camera_gimbal.gd +++ b/player/camera_gimbal.gd @@ -7,8 +7,10 @@ var locked_mouse_positon = Vector2(0,0) var mouse_locked = false var mouse_x_velocity = 0 var mouse_y_velocity = 0 + var zoom_min = 4 -var zoom_max = 100 +var zoom_max = 80 +var zoom_speed = 20 var current_zoom = 8 func reset(): @@ -27,9 +29,9 @@ func _input(event): mouse_x_velocity = event.relative.x mouse_y_velocity = event.relative.y elif event.is_action_pressed("zoom_out"): - current_zoom += 5 + current_zoom += 1 elif event.is_action_pressed("zoom_in"): - current_zoom -= 5 + current_zoom -= 1 func _process(delta): # rotate outer gimbal around y axis @@ -65,4 +67,7 @@ func _process(delta): reset() current_zoom = clamp(current_zoom, zoom_min, zoom_max) - $InnerGimbal/Camera3D.position = Vector3($InnerGimbal/Camera3D.position.x, current_zoom, current_zoom) + + $InnerGimbal/Camera3D.position.x = $InnerGimbal/Camera3D.position.x + $InnerGimbal/Camera3D.position.y = lerp($InnerGimbal/Camera3D.position.y, float(current_zoom), zoom_speed*delta) + $InnerGimbal/Camera3D.position.z = lerp($InnerGimbal/Camera3D.position.z, float(current_zoom), zoom_speed*delta)