diff options
author | metamuffin <metamuffin@disroot.org> | 2025-06-06 19:11:48 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-06-06 19:11:48 +0200 |
commit | a7eab8b599bc8f93081de100bcc080b6751d7ecf (patch) | |
tree | caee2f4da572a0659d84a6bd8359c76791929b1d /client | |
parent | 1f1ae642e8cba75b91b2f49f1e499aae7c46d85c (diff) | |
download | hurrycurry-a7eab8b599bc8f93081de100bcc080b6751d7ecf.tar hurrycurry-a7eab8b599bc8f93081de100bcc080b6751d7ecf.tar.bz2 hurrycurry-a7eab8b599bc8f93081de100bcc080b6751d7ecf.tar.zst |
smoother camera when autozoom spectator
Diffstat (limited to 'client')
-rw-r--r-- | client/game.gd | 1 | ||||
-rw-r--r-- | client/player/follow_camera.gd | 4 |
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: |