diff options
author | Logan <logan@cflip.net> | 2022-09-25 21:07:46 -0600 |
---|---|---|
committer | Logan <logan@cflip.net> | 2022-09-25 21:07:46 -0600 |
commit | 60f1359003b896743f4269ccb557b9634d53c729 (patch) | |
tree | 689b9cf00f77b564d9ccddf3cc12a4eaa9b9ca04 | |
parent | 509082f1e1560b60b2832f5f556853ac97aee124 (diff) |
Allow shooting when sprite is at the outer shape bounds.
-rw-r--r-- | scripts/basketball.gd | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/scripts/basketball.gd b/scripts/basketball.gd index d9387de..f36fa44 100644 --- a/scripts/basketball.gd +++ b/scripts/basketball.gd @@ -11,6 +11,8 @@ var power_magnitude = 10 var spin_rotation = 0 var ready_to_shoot var ready_to_hold +var exit_position +var has_exited func _ready(): start_position = position @@ -26,7 +28,7 @@ func toggle_mode(): global_variables.has_scored = false waiting_for_shoot = true set_use_custom_integrator(waiting_for_shoot) - + func shoot(): apply_impulse(Vector2(2, 2), Vector2(power)) @@ -54,11 +56,16 @@ func _input(event): $GhostSprite.visible = true $GhostSprite.rotation = $Sprite.rotation is_dragging = true - if is_dragging and event is InputEventMouseMotion: + if !has_exited and is_dragging and event is InputEventMouseMotion: $Sprite.position = event.position - start_position if event.is_action_released("shoot"): if is_dragging and ready_to_shoot or !waiting_for_shoot: - power = (start_position - event.position) * power_magnitude + var basketball_position + if has_exited: + basketball_position = exit_position + else: + basketball_position = event.position + power = (start_position - basketball_position) * power_magnitude $Sprite.position = Vector2() is_dragging = false $GhostSprite.visible = false @@ -66,14 +73,16 @@ func _input(event): func on_OuterShape_mouse_entered(): ready_to_shoot = true - + has_exited = false func _on_OuterShape_mouse_exited(): - ready_to_shoot = false - $Sprite.position = Vector2() - is_dragging = false + if is_dragging: + exit_position = get_global_mouse_position() + $Sprite.position = get_local_mouse_position() + has_exited = true + else: + ready_to_shoot = false func _on_InnerShape_mouse_entered(): ready_to_hold = true - func _on_InnerShape_mouse_exited(): ready_to_hold = false |