From 3d4c75ddabb0c4dbfc9a8418eb1250a950d71f18 Mon Sep 17 00:00:00 2001 From: Spencer Killen Date: Sat, 11 Nov 2023 17:24:52 -0700 Subject: [PATCH] progress2 --- attribution.txt | 6 ++- godot/audio/billiard-clack.wav | Bin 0 -> 21152 bytes godot/audio/billiard-clack.wav.import | 24 ++++++++++ godot/control_scheme/controller.gd | 44 ++++++++++++++---- godot/control_scheme/controller.tscn | 10 +++- godot/control_scheme/is_targetable.gd | 3 ++ godot/grape.glb.import | 3 +- godot/physics/billiard.gd | 6 +++ .../control_scheme/test_basic_controls.tscn | 7 ++- 9 files changed, 87 insertions(+), 16 deletions(-) create mode 100644 godot/audio/billiard-clack.wav create mode 100644 godot/audio/billiard-clack.wav.import diff --git a/attribution.txt b/attribution.txt index a46e1d3..0b05adf 100644 --- a/attribution.txt +++ b/attribution.txt @@ -8,4 +8,8 @@ CMKY: https://www.shadertoy.com/view/MltBW4 Fresnel: https://godotshaders.com/snippet/fresnel/ Code: -occlussion shader: https://www.reddit.com/r/godot/comments/rww6e9/comment/hrfa51g/?utm_source=share&utm_medium=web2x&context=3 \ No newline at end of file +occlussion shader: https://www.reddit.com/r/godot/comments/rww6e9/comment/hrfa51g/?utm_source=share&utm_medium=web2x&context=3 + + +Sound: +billiard-clack: https://freesound.org/people/Za-Games/sounds/539854/ diff --git a/godot/audio/billiard-clack.wav b/godot/audio/billiard-clack.wav new file mode 100644 index 0000000000000000000000000000000000000000..7dafc6d5901927e61dd8f0123b90c1de0d529879 GIT binary patch literal 21152 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 1.0: + cancel_charge() -var charge_tween: Tween = null -func charge(amount: float): +func cancel_charge(): + %radial_ui.set_charge(0.0) + %ChargeSound.stop() if charge_tween != null: charge_tween.kill() - if amount == 0.0: - %radial_ui.set_charge(0.0) - $AudioStreamPlayer.stop() + charge_tween = null + var billiard := target.get_billiard() + billiard.can_hit = true + +func release(): + if get_charge() <= min_charge: + cancel_charge() return + %ChargeReleaseSound.volume_db = get_charge() * 12 + %ChargeReleaseSound.play() + var billiard := target.get_billiard() + billiard.hit((target.global_position - %camera_spot.global_position).normalized()) + %radial_ui.set_charge(0.0) + %ChargeSound.stop() + if charge_tween != null: + charge_tween.kill() + charge_tween = null + +var charge_tween: Tween = null +func charge(_amount: float): + var billiard := target.get_billiard() + billiard.can_hit = false + if charge_tween != null: + charge_tween.kill() charge_tween = create_tween() charge_tween.tween_method(%radial_ui.set_charge, 0.0, 1.0, charge_time) - $AudioStreamPlayer.play() + %ChargeSound.play() func rotate_view(amount: Vector2): rotate_y(-amount.x) diff --git a/godot/control_scheme/controller.tscn b/godot/control_scheme/controller.tscn index 863eb79..3820c7e 100644 --- a/godot/control_scheme/controller.tscn +++ b/godot/control_scheme/controller.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://drmb4sitb74fx"] +[gd_scene load_steps=5 format=3 uid="uid://drmb4sitb74fx"] [ext_resource type="Script" path="res://control_scheme/controller.gd" id="1_h3pjb"] [ext_resource type="PackedScene" uid="uid://p2n48c8st55d" path="res://control_scheme/radial_ui.tscn" id="2_qidcb"] [ext_resource type="AudioStream" uid="uid://ckhf7ksthi053" path="res://audio/charge.wav" id="3_exgm6"] +[ext_resource type="AudioStream" uid="uid://c5v6c6x05lqg3" path="res://audio/billiard-clack.wav" id="4_12r5s"] [node name="controller" type="Node3D"] top_level = true @@ -18,5 +19,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0) [node name="radial_ui" parent="." instance=ExtResource("2_qidcb")] unique_name_in_owner = true -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +[node name="ChargeSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true stream = ExtResource("3_exgm6") + +[node name="ChargeReleaseSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource("4_12r5s") diff --git a/godot/control_scheme/is_targetable.gd b/godot/control_scheme/is_targetable.gd index 071ba9e..6d2b733 100644 --- a/godot/control_scheme/is_targetable.gd +++ b/godot/control_scheme/is_targetable.gd @@ -6,6 +6,9 @@ class_name Targetable static func is_targetable(node: Node3D) -> Targetable: return node.get_node_or_null("is_targetable") +func get_billiard() -> Billiard: + return get_parent() + func make_target(): walk_meshes_post_order(self.get_parent(), change_all_materials) diff --git a/godot/grape.glb.import b/godot/grape.glb.import index aafbf78..77a2fce 100644 --- a/godot/grape.glb.import +++ b/godot/grape.glb.import @@ -33,7 +33,8 @@ _subresources={ "PATH:grape2": { "generate/physics": true, "physics/body_type": 1, -"physics/shape_type": 1 +"physics/shape_type": 4, +"primitive/radius": 0.03 } } } diff --git a/godot/physics/billiard.gd b/godot/physics/billiard.gd index 0c5c0bb..51c959c 100644 --- a/godot/physics/billiard.gd +++ b/godot/physics/billiard.gd @@ -1 +1,7 @@ extends RigidBody3D +class_name Billiard + +var can_hit = true + +func hit(impulse: Vector3): + apply_central_impulse(impulse) diff --git a/godot/tests/control_scheme/test_basic_controls.tscn b/godot/tests/control_scheme/test_basic_controls.tscn index 5183a0a..3907bf9 100644 --- a/godot/tests/control_scheme/test_basic_controls.tscn +++ b/godot/tests/control_scheme/test_basic_controls.tscn @@ -22,11 +22,10 @@ camera = NodePath("Camera3D") initial_target = NodePath("../grape") [node name="Camera3D" type="Camera3D" parent="controller" index="1"] +current = true -[node name="billiard" parent="." index="4" instance=ExtResource("3_gijly")] - -[node name="grape" parent="." index="5" instance=ExtResource("3_gijly")] +[node name="grape" parent="." index="4" instance=ExtResource("3_gijly")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.56762, 0.385236) -[node name="grape2" parent="." index="6" instance=ExtResource("3_gijly")] +[node name="grape2" parent="." index="5" instance=ExtResource("3_gijly")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.60495, 0)