summaryrefslogtreecommitdiff
path: root/scripts/basketball.gd
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2022-09-26 19:33:11 -0600
committercflip <cflip@cflip.net>2022-09-26 19:41:22 -0600
commit2803cbd5200dcc4f9b6d22927f637b3a10dfa2a8 (patch)
tree2ba576ef7243476eb9782b66f4177d5c102d9671 /scripts/basketball.gd
parent213c859794722954177f1b516083b6313e084f00 (diff)
Make sprite retain direction when cursor leaves outer radius
Diffstat (limited to 'scripts/basketball.gd')
-rw-r--r--scripts/basketball.gd16
1 files changed, 14 insertions, 2 deletions
diff --git a/scripts/basketball.gd b/scripts/basketball.gd
index b80cf92..6770382 100644
--- a/scripts/basketball.gd
+++ b/scripts/basketball.gd
@@ -56,8 +56,20 @@ func _input(event):
$GhostSprite.visible = true
$Sprite.position = event.position - start_position
$GhostSprite.rotation = $Sprite.rotation
- if !has_exited and is_dragging and event is InputEventMouseMotion:
- $Sprite.position = event.position - start_position
+ if is_dragging and event is InputEventMouseMotion:
+ var sprite_position = event.position - start_position
+ var hypot = sqrt(sprite_position.x * sprite_position.x + sprite_position.y * sprite_position.y)
+ var circle_radius = $OuterShape/CollisionShape2D.shape.radius
+
+ if hypot > circle_radius:
+ var angle = atan2(sprite_position.y, sprite_position.x)
+
+ var new_x = circle_radius * cos(angle)
+ var new_y = circle_radius * sin(angle)
+
+ $Sprite.position = Vector2(new_x, new_y)
+ else:
+ $Sprite.position = sprite_position
if event.is_action_released("shoot"):
if !waiting_for_shoot:
toggle_mode()