diff options
author | Logan <logan@cflip.net> | 2022-10-01 12:16:05 -0600 |
---|---|---|
committer | Logan <logan@cflip.net> | 2022-10-01 12:16:05 -0600 |
commit | 70522c38af7d241e7144761e7f21b8a97e726d93 (patch) | |
tree | 4a8038a71909c37b7d991e3f00b87e731c2502b1 | |
parent | 10ac0a9f9b582d250338d167fb0417f52aaaa0d0 (diff) |
Prevent camera from zooming too far out.
-rw-r--r-- | scenes/level.tscn | 3 | ||||
-rw-r--r-- | scripts/camera.gd | 16 |
2 files changed, 16 insertions, 3 deletions
diff --git a/scenes/level.tscn b/scenes/level.tscn index 6f6dde7..ca40704 100644 --- a/scenes/level.tscn +++ b/scenes/level.tscn @@ -19,7 +19,7 @@ normal = Vector2( 1, 0 ) [node name="Node2D" type="Node2D"] [node name="Camera2D" type="Camera2D" parent="."] -position = Vector2( 123, 73 ) +position = Vector2( 123, 55 ) current = true limit_left = -202 limit_top = -202 @@ -83,4 +83,5 @@ position = Vector2( 123, 73 ) [connection signal="score" from="Hoop" to="Interface" method="_on_Hoop_score"] [connection signal="score" from="Hoop" to="Basketball" method="_on_Hoop_score"] +[connection signal="reset" from="Basketball" to="Camera2D" method="_on_Basketball_reset"] [connection signal="reset" from="Basketball" to="Hoop" method="_on_Basketball_reset"] diff --git a/scripts/camera.gd b/scripts/camera.gd index de8b20c..f44e430 100644 --- a/scripts/camera.gd +++ b/scripts/camera.gd @@ -4,8 +4,20 @@ onready var basketball = $"../Basketball" onready var hoop = $"../Hoop" func _process(_delta): - position = (basketball.position + hoop.position) / 2 - if (basketball.position.distance_to(hoop.position) + (basketball.drag_radius * 3)) > limit_right: + if !basketball.waiting_for_shoot: + position = (basketball.position + hoop.position) / 2 + adjust_zoom() + +func adjust_zoom(): + if !basketball.waiting_for_shoot and (basketball.position.distance_to(hoop.position) + (basketball.drag_radius * 3)) > limit_right: set_zoom(Vector2(1, 1) * ((basketball.position.distance_to(hoop.position) + (basketball.drag_radius * 3)) / limit_right)) + elif basketball.waiting_for_shoot and (basketball.start_position.distance_to(hoop.position) + (basketball.drag_radius * 3)) > limit_right: + set_zoom(Vector2(1, 1) * ((basketball.start_position.distance_to(hoop.position) + (basketball.drag_radius * 3)) / limit_right)) else: set_zoom(Vector2(1, 1)) + var zoom_level = get_zoom() + set_zoom(Vector2(clamp(zoom_level.x, 1, 1.94), clamp(zoom_level.y, 1, 1.94))) + +func _on_Basketball_reset(): + position = (basketball.start_position + hoop.position) / 2 + adjust_zoom() |