From 2803cbd5200dcc4f9b6d22927f637b3a10dfa2a8 Mon Sep 17 00:00:00 2001 From: cflip Date: Mon, 26 Sep 2022 19:33:11 -0600 Subject: Make sprite retain direction when cursor leaves outer radius --- scripts/basketball.gd | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'scripts/basketball.gd') 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() -- cgit v1.2.3