summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/game.gd1
-rw-r--r--client/player/follow_camera.gd4
2 files changed, 4 insertions, 1 deletions
diff --git a/client/game.gd b/client/game.gd
index 100125fd..4cdcaf43 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -397,6 +397,7 @@ func get_tile_interactive(pos: Vector2i) -> bool:
func update_center():
+ $FollowCamera.autozoom = spectating_mode == SpectatingMode.CENTER
if join_state != JoinState.SPECTATING:
return
if Input.get_vector("left", "right", "forwards", "backwards").normalized().length() > .1:
diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd
index f7a00c64..447540f3 100644
--- a/client/player/follow_camera.gd
+++ b/client/player/follow_camera.gd
@@ -27,6 +27,7 @@ const ANGLE_UP_MIN: float = 0.5
const ANGLE_UP_MAX: float = 0.4999 * PI
const LOOK_WEIGHT: float = 8.0
const MOVE_WEIGHT: float = 2.0
+const ZOOM_WEIGHT_AUTO: float = 0.5
const ZOOM_SPEED: float = 1.0
const DISCRETE_DURATION: float = 0.3
const ZOOM_WEIGHT: float = 10.0
@@ -36,6 +37,7 @@ const ZOOM_CURRENT_TO_MAX_RATIO: float = 1.35
@export var target: Node3D
+var autozoom: bool = false
var angle_target: float = 0
var angle: float = 0
var angle_up_target: float = 1
@@ -113,7 +115,7 @@ func follow(delta):
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)
+ camera_distance = G.interpolate(camera_distance, camera_distance_target, delta * (ZOOM_WEIGHT_AUTO if autozoom else ZOOM_WEIGHT))
position = ground + offset
if target.get_parent() is ControllablePlayer: