diff options
author | metamuffin <metamuffin@disroot.org> | 2024-07-21 15:12:23 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-07-21 15:12:23 +0200 |
commit | ff164058b7a9817ab107651ab9a67898fc273758 (patch) | |
tree | 5533783ee8f3fc254c7c35e8c2c293a5fc6208e9 | |
parent | 531ce5bb4c03a01615b2ec2df4067416cc8e53f2 (diff) | |
download | hurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar hurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar.bz2 hurrycurry-ff164058b7a9817ab107651ab9a67898fc273758.tar.zst |
clean up camera zoom
-rw-r--r-- | client/player/follow_camera.gd | 16 |
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) |