diff options
author | Logan <logan@cflip.net> | 2022-09-24 17:42:49 -0600 |
---|---|---|
committer | Logan <logan@cflip.net> | 2022-09-24 17:42:49 -0600 |
commit | b41e2b9eeee4370b9f42d63708ab25ee81490996 (patch) | |
tree | 615d696519cb26a75a27a3c851758cda4aa41a75 | |
parent | 286f4e6a2d70174d7bfb928ed1646ec03a5a37ab (diff) |
Only throw basketball on mouse-release when cursor is near ball.
-rw-r--r-- | project.godot | 2 | ||||
-rw-r--r-- | scenes/basketball.tscn | 13 | ||||
-rw-r--r-- | scripts/basketball.gd | 15 |
3 files changed, 24 insertions, 6 deletions
diff --git a/project.godot b/project.godot index 43deae4..80c33ce 100644 --- a/project.godot +++ b/project.godot @@ -26,7 +26,7 @@ common/drop_mouse_on_gui_input_disabled=true shoot={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) ] } diff --git a/scenes/basketball.tscn b/scenes/basketball.tscn index f49819d..75a5e60 100644 --- a/scenes/basketball.tscn +++ b/scenes/basketball.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://textures/basketball.png" type="Texture" id=1] [ext_resource path="res://scripts/basketball.gd" type="Script" id=2] @@ -9,6 +9,9 @@ bounce = 0.5 [sub_resource type="CircleShape2D" id=1] radius = 40.0 +[sub_resource type="CircleShape2D" id=3] +radius = 150.0 + [node name="Basketball" type="RigidBody2D"] physics_material_override = SubResource( 2 ) script = ExtResource( 2 ) @@ -22,3 +25,11 @@ shape = SubResource( 1 ) [node name="Sprite" type="Sprite" parent="."] scale = Vector2( 5, 5 ) texture = ExtResource( 1 ) + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource( 3 ) + +[connection signal="mouse_entered" from="Area2D" to="." method="_on_Area2D_mouse_entered"] +[connection signal="mouse_exited" from="Area2D" to="." method="_on_Area2D_mouse_exited"] diff --git a/scripts/basketball.gd b/scripts/basketball.gd index 5435963..246af81 100644 --- a/scripts/basketball.gd +++ b/scripts/basketball.gd @@ -9,6 +9,7 @@ var start_position var waiting_for_shoot = true var power = 100 var spin_rotation = 0 +var ready_to_shoot func _ready(): start_position = position @@ -34,7 +35,7 @@ func _integrate_forces(state): state.linear_velocity = Vector2() state.angular_velocity = 0 -# Temporary controls to adjust power +# Temporary testing controls func _process(delta): if waiting_for_shoot: spin_rotation += spin_speed * delta @@ -43,7 +44,6 @@ func _process(delta): if Input.is_action_pressed("ui_right"): start_position.x += move_speed * delta start_position.x = clamp(start_position.x, 0, 1024) - if Input.is_action_pressed("ui_up"): if power < 200: power += 0.5 @@ -54,5 +54,12 @@ func _process(delta): emit_signal("change_power", power) func _input(event): - if event.is_action_pressed("shoot"): - toggle_mode() + if event.is_action_released("shoot"): + if ready_to_shoot or !waiting_for_shoot: + toggle_mode() + +func _on_Area2D_mouse_entered(): + ready_to_shoot = true + +func _on_Area2D_mouse_exited(): + ready_to_shoot = false |