diff options
author | cflip <cflip@cflip.net> | 2022-09-26 19:33:11 -0600 |
---|---|---|
committer | cflip <cflip@cflip.net> | 2022-09-26 19:41:22 -0600 |
commit | 2803cbd5200dcc4f9b6d22927f637b3a10dfa2a8 (patch) | |
tree | 2ba576ef7243476eb9782b66f4177d5c102d9671 /scripts/basketball.gd | |
parent | 213c859794722954177f1b516083b6313e084f00 (diff) |
Make sprite retain direction when cursor leaves outer radius
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() |