diff options
author | nokoe <nokoe@mailbox.org> | 2025-06-23 14:37:02 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2025-06-23 14:37:02 +0200 |
commit | 5d282cc162729329f124f24cd88386ee1deefa41 (patch) | |
tree | c8e74df63df05c33cecc58afc8dd3a3025501d26 /client/player | |
parent | 6cfae3a402a31a0c897e3f5184d4803e8c978a1d (diff) | |
download | hurrycurry-5d282cc162729329f124f24cd88386ee1deefa41.tar hurrycurry-5d282cc162729329f124f24cd88386ee1deefa41.tar.bz2 hurrycurry-5d282cc162729329f124f24cd88386ee1deefa41.tar.zst |
zoom by `InputEventMagnifyGesture`
on android, this should fix #332
Diffstat (limited to 'client/player')
-rw-r--r-- | client/player/follow_camera.gd | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/client/player/follow_camera.gd b/client/player/follow_camera.gd index 447540f3..ebe41f00 100644 --- a/client/player/follow_camera.gd +++ b/client/player/follow_camera.gd @@ -65,12 +65,20 @@ func _input(_event): if _disable_input: return if Input.is_action_just_pressed("reset"): reset() + if _event is InputEventMagnifyGesture: + zoom(1 - _event.factor) func reset(): angle_target = 0 angle_up_target = 1 camera_distance_target = 10 +func zoom(zoom_dist: float) -> void: + 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) + func follow(delta): if Global.get_setting("gameplay.first_person"): global_position = target.global_position + Vector3.UP * 1.33 @@ -109,11 +117,7 @@ func follow(delta): ground = G.interpolate(ground, target.position + Vector3(0., 0.5, 0.), delta * MOVE_WEIGHT) if not _disable_input: - 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) + zoom(Input.get_axis("zoom_in", "zoom_out") * delta) camera_distance = G.interpolate(camera_distance, camera_distance_target, delta * (ZOOM_WEIGHT_AUTO if autozoom else ZOOM_WEIGHT)) |