diff options
Diffstat (limited to 'scripts/basketball.gd')
-rw-r--r-- | scripts/basketball.gd | 16 |
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() |