summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan <logan@cflip.net>2022-10-01 12:16:05 -0600
committerLogan <logan@cflip.net>2022-10-01 12:16:05 -0600
commit70522c38af7d241e7144761e7f21b8a97e726d93 (patch)
tree4a8038a71909c37b7d991e3f00b87e731c2502b1
parent10ac0a9f9b582d250338d167fb0417f52aaaa0d0 (diff)
Prevent camera from zooming too far out.
-rw-r--r--scenes/level.tscn3
-rw-r--r--scripts/camera.gd16
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()