summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLogan <logan@cflip.net>2022-09-25 21:07:46 -0600
committerLogan <logan@cflip.net>2022-09-25 21:07:46 -0600
commit60f1359003b896743f4269ccb557b9634d53c729 (patch)
tree689b9cf00f77b564d9ccddf3cc12a4eaa9b9ca04
parent509082f1e1560b60b2832f5f556853ac97aee124 (diff)
Allow shooting when sprite is at the outer shape bounds.
-rw-r--r--scripts/basketball.gd25
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