diff options
author | cflip <cflip@cflip.net> | 2022-09-24 19:43:28 -0600 |
---|---|---|
committer | cflip <cflip@cflip.net> | 2022-09-24 19:43:28 -0600 |
commit | 5a5521ceab6e909c57e1186a09d9a6a2327dbcc3 (patch) | |
tree | 9db1f2e6e04fabaa72e65f52000812b47007956d | |
parent | 0d5aca0234e477d79d980677e6fbdf7c2d19b8fa (diff) |
Move basketball sprite while dragging before shot
-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 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 |