aboutsummaryrefslogtreecommitdiff
path: root/client/player
diff options
context:
space:
mode:
Diffstat (limited to 'client/player')
-rw-r--r--client/player/follow_camera.gd7
1 files changed, 5 insertions, 2 deletions
diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd
index 5440f8b1..3c993ee0 100644
--- a/client/player/follow_camera.gd
+++ b/client/player/follow_camera.gd
@@ -2,6 +2,7 @@
# Copyright 2024 nokoe
# Copyright 2024 tpart
# Copyright 2024 metamuffin
+# Copyright 2024 BigBrotherNii
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
@@ -31,6 +32,7 @@ const ZOOM_SPEED_DISCRETE: float = 1.0
const ZOOM_WEIGHT: float = 10.0
const MAX_ZOOM: float = 20.0
const MIN_ZOOM: float = 2.0
+const ZOOM_CURRENT_TO_MAX_RATIO: float = 1.35
@export var target: Node3D
@@ -90,10 +92,11 @@ func follow(delta):
camera_distance_target += Input.get_axis("zoom_in", "zoom_out") * ZOOM_SPEED * delta
+ # (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM) simulates the exponential zooming for the mouse
if Input.is_action_just_pressed("zoom_in_discrete"):
- camera_distance_target -= ZOOM_SPEED_DISCRETE
+ camera_distance_target -= ZOOM_SPEED_DISCRETE * (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM)
elif Input.is_action_just_pressed("zoom_out_discrete"):
- camera_distance_target += ZOOM_SPEED_DISCRETE
+ camera_distance_target += ZOOM_SPEED_DISCRETE * (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM)
camera_distance_target = clamp(camera_distance_target, MIN_ZOOM, MAX_ZOOM)