aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-21 15:12:23 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-21 15:12:23 +0200
commitff164058b7a9817ab107651ab9a67898fc273758 (patch)
tree5533783ee8f3fc254c7c35e8c2c293a5fc6208e9
parent531ce5bb4c03a01615b2ec2df4067416cc8e53f2 (diff)
downloadhurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar
hurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar.bz2
hurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar.zst
clean up camera zoom
-rw-r--r--client/player/follow_camera.gd16
1 files changed, 6 insertions, 10 deletions
diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd
index 6bd1b9ef..70dd2a96 100644
--- a/client/player/follow_camera.gd
+++ b/client/player/follow_camera.gd
@@ -27,8 +27,8 @@ const ANGLE_UP_MIN: float = 0.5
const ANGLE_UP_MAX: float = 1.2
const LOOK_WEIGHT: float = 8.0
const MOVE_WEIGHT: float = 2.0
-const ZOOM_SPEED: float = 10.0
-const ZOOM_SPEED_DISCRETE: float = 1.0
+const ZOOM_SPEED: float = 1.0
+const DISCRETE_DURATION: float = 0.3
const ZOOM_WEIGHT: float = 10.0
const MAX_ZOOM: float = 20.0
const MIN_ZOOM: float = 2.0
@@ -90,14 +90,10 @@ func follow(delta):
# add 0.5, this is the head height
ground = G.interpolate(ground, target.position + Vector3(0., 0.5, 0.), delta * MOVE_WEIGHT)
- 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 * (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 * (ZOOM_CURRENT_TO_MAX_RATIO * camera_distance_target / MAX_ZOOM)
-
+ var zoom_dist = Input.get_axis("zoom_in", "zoom_out") * delta
+ zoom_dist += float(Input.is_action_just_pressed("zoom_out_discrete")) * DISCRETE_DURATION
+ zoom_dist -= float(Input.is_action_just_pressed("zoom_in_discrete")) * DISCRETE_DURATION
+ camera_distance_target *= exp(zoom_dist * ZOOM_SPEED)
camera_distance_target = clamp(camera_distance_target, MIN_ZOOM, MAX_ZOOM)
camera_distance = G.interpolate(camera_distance, camera_distance_target, delta * ZOOM_WEIGHT)