summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2022-09-24 19:43:28 -0600
committercflip <cflip@cflip.net>2022-09-24 19:43:28 -0600
commit5a5521ceab6e909c57e1186a09d9a6a2327dbcc3 (patch)
tree9db1f2e6e04fabaa72e65f52000812b47007956d
parent0d5aca0234e477d79d980677e6fbdf7c2d19b8fa (diff)
Move basketball sprite while dragging before shot
-rw-r--r--scripts/basketball.gd16
1 files changed, 14 insertions, 2 deletions
diff --git a/scripts/basketball.gd b/scripts/basketball.gd
index 407c473..9a286e7 100644
--- a/scripts/basketball.gd
+++ b/scripts/basketball.gd
@@ -4,6 +4,7 @@ export var spin_speed = -1
export var move_speed = 300
var start_position
+var is_dragging = false
var waiting_for_shoot = true
var power
var power_magnitude = 10
@@ -29,7 +30,7 @@ func shoot():
# Override the default physics when we want to manually set the position and rotation.
func _integrate_forces(state):
if waiting_for_shoot:
- state.transform.origin = start_position
+ state.transform = Transform2D(0, start_position)
state.linear_velocity = Vector2()
state.angular_velocity = 0
@@ -44,17 +45,28 @@ func _process(delta):
start_position.x = clamp(start_position.x, 0, 1024)
func _input(event):
+ if event.is_action_pressed("shoot") and ready_to_hold:
+ $Sprite.position = event.position - start_position
+ is_dragging = true
+ if is_dragging and event is InputEventMouseMotion:
+ $Sprite.position = event.position - start_position
if event.is_action_released("shoot"):
- if ready_to_shoot or !waiting_for_shoot:
+ if is_dragging and ready_to_shoot or !waiting_for_shoot:
power = (start_position - event.position) * power_magnitude
+ $Sprite.position = Vector2()
+ is_dragging = false
toggle_mode()
func on_OuterShape_mouse_entered():
ready_to_shoot = true
+
func _on_OuterShape_mouse_exited():
ready_to_shoot = false
+ $Sprite.position = Vector2()
+ is_dragging = false
func _on_InnerShape_mouse_entered():
ready_to_hold = true
+
func _on_InnerShape_mouse_exited():
ready_to_hold = false