From 5a5521ceab6e909c57e1186a09d9a6a2327dbcc3 Mon Sep 17 00:00:00 2001 From: cflip Date: Sat, 24 Sep 2022 19:43:28 -0600 Subject: Move basketball sprite while dragging before shot --- scripts/basketball.gd | 16 ++++++++++++++-- 1 file 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 -- cgit v1.2.3