From 84b689b8194bf1f1b0916dad6a7eb66c9d63539a Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Fri, 25 Jul 2025 17:56:33 -0600 Subject: [PATCH] temporary commit --- assets/models/enemies/boney/eyes.material | Bin 773 -> 768 bytes assets/models/enemies/boney/head.material | Bin 990 -> 990 bytes assets/shaders/flag.gdshader | 2 + assets/sounds/enemies/uncanny_jumpscare.ogg | Bin 0 -> 29484 bytes .../enemies/uncanny_jumpscare.ogg.import | 19 +++++ assets/textures/ui/logo.png | Bin 0 -> 5561 bytes assets/textures/ui/logo.png.import | 34 +++++++++ autoloads/scene_manager.tscn | 10 +-- objects/canny_cat.tscn | 68 +++++++++++------- objects/skull.tscn | 13 ++-- objects/uncanny_cat.gd | 9 +++ objects/uncanny_cat.tscn | 28 +++++++- project.godot | 2 + ui/game_ui.tscn | 22 ++++++ 14 files changed, 167 insertions(+), 40 deletions(-) create mode 100644 assets/sounds/enemies/uncanny_jumpscare.ogg create mode 100644 assets/sounds/enemies/uncanny_jumpscare.ogg.import create mode 100644 assets/textures/ui/logo.png create mode 100644 assets/textures/ui/logo.png.import create mode 100644 ui/game_ui.tscn diff --git a/assets/models/enemies/boney/eyes.material b/assets/models/enemies/boney/eyes.material index 348b358537ed7909d335996df3c55229322b69db..89d988aa74f3aa004ec6e6338b32f3bee9c2a0cd 100644 GIT binary patch literal 768 zcmV+b1ONO|Q$s@n000005C8y;1^@u)0ssIgwJ-f(jRo}<0LJ8MG;nLu0sIRR00000 z00b{&*S zHJ3PdF*5^JL7a`t8T-xbfVtzkf0E5?!YZ$=wAXbewy-Fr@58ob;Eok8O| zD3_-@45KN+no#2J`KOqIolf#A9WgTk8!#Hxva1Wir6|fND&<5IWn-@F{8a`5fj}S= zXqi}V{Wo>i^npnfSIWu6_?;89e7 zhNyw9L57A%Mv{~y!x%6ELZBil4-z1>K?)+MOc6;fOkvvJ67Im5Do9d{`73n%P+}g* zG%YbNflLG=rG`?|#Ip&#qUvV_gE5dO@6JJ{*(EL$WN@6>ISDQ`Q8(u855+chvaRq4 zt*1y!dlz;+jy24V(GKXhi-v14v+p7&=zk3Zm2b&>K?$+9z?CDYv;l+9ejm$@!MO+xUG z%o!z}Yswg)2oCs! zpYeYK!UGQ=DkMUDcm@gzb+b`JT1*SOQ%gt8GKp+qZ zWFo0$6y{uQQNp*lP&M7|WQJiACeCIB)lD3W4U7$iQtV7B*Fp(8jRcEnBU~m|VY6)M z(kmki`rs8yp=R7%p_U_yb5pRCp7CvyzWWF19>4waJwaRuArE#>c|~OZX3< zn=UHw;4Rh2rK%m4k%fCIA8nUtVY8-;OvqfNwb6%dW2Lx#sgU;KMK5J7IVfMsN10v@ zYw#!mfQP7&twDx{N|Sb)FXK(HdRG1@u(ZPETFqU;O=ANozhAjFq|tkuGLEW3DsGi+*0If;CL zW6*&>D4TF+^qL?2JY8j0YL*wIjlUQ_;u>px2SgPrSgq|ZhFi{r)7MCn>&^md2#71J zX=sSS=b2SP)03b?A2M zhkytgbfM505Vf0z!ivTvM8BD?To3CY-~49NWijI$t=8BlA8^VhNUGI!V5I?eQd2`i DfSz26 diff --git a/assets/models/enemies/boney/head.material b/assets/models/enemies/boney/head.material index dfa16610b46e2d9fc4d3f046e165237d8601b5ce..0e11aa88e5347f20dd6358def936f8a321f99eb3 100644 GIT binary patch delta 804 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 a4!7w+fI4oW9tBiY1l!$*bz)g$%6|apRx`B# literal 0 HcmV?d00001 diff --git a/assets/textures/ui/logo.png.import b/assets/textures/ui/logo.png.import new file mode 100644 index 0000000..df413a0 --- /dev/null +++ b/assets/textures/ui/logo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bopw8k88m2g1w" +path="res://.godot/imported/logo.png-d4118e8bb5f85a30da1be236612c9656.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/ui/logo.png" +dest_files=["res://.godot/imported/logo.png-d4118e8bb5f85a30da1be236612c9656.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn index 7f3b842..0cd08de 100644 --- a/autoloads/scene_manager.tscn +++ b/autoloads/scene_manager.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"] +[gd_scene load_steps=3 format=3 uid="uid://dxrvocxjk8vs3"] [ext_resource type="Script" uid="uid://dno6wobc85qrw" path="res://autoloads/scene_manager.gd" id="1_d112a"] +[ext_resource type="PackedScene" uid="uid://b1yer7h40imop" path="res://ui/game_ui.tscn" id="2_b11xn"] [node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")] script = ExtResource("1_d112a") @@ -12,15 +13,16 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/separation = 0 -[node name="SideBar" type="Control" parent="HBoxContainer"] +[node name="SideBar" parent="HBoxContainer" instance=ExtResource("2_b11xn")] layout_mode = 2 -size_flags_horizontal = 3 +size_flags_horizontal = 1 [node name="MainView" type="Control" parent="HBoxContainer"] custom_minimum_size = Vector2(288, 216) layout_mode = 2 -size_flags_horizontal = 10 +size_flags_horizontal = 3 [node name="SubViewportContainer" type="SubViewportContainer" parent="HBoxContainer/MainView"] layout_mode = 1 diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index 2140f9b..42f1fb3 100644 --- a/objects/canny_cat.tscn +++ b/objects/canny_cat.tscn @@ -150,77 +150,91 @@ initial_expression_properties = { [node name="Root" type="Node" parent="StateChart"] script = ExtResource("5_ox6hb") +initial_state = NodePath("Active") + +[node name="Active" type="Node" parent="StateChart/Root"] +script = ExtResource("5_ox6hb") initial_state = NodePath("Moving") -[node name="on GoalEntered" type="Node" parent="StateChart/Root"] +[node name="on GoalEntered" type="Node" parent="StateChart/Root/Active"] script = ExtResource("7_epv8h") -to = NodePath("../Winning") +to = NodePath("../../Inactive/Winning") event = &"goal_entered" delay_in_seconds = "0.0" -[node name="on PoleAttached" type="Node" parent="StateChart/Root"] +[node name="on Died" type="Node" parent="StateChart/Root/Active"] +script = ExtResource("7_epv8h") +to = NodePath("../../Inactive/Winning") +event = &"goal_entered" +delay_in_seconds = "0.0" + +[node name="on PoleAttached" type="Node" parent="StateChart/Root/Active"] script = ExtResource("7_epv8h") to = NodePath("../PoleSpinning") event = &"pole_attached" delay_in_seconds = "0.0" -[node name="Idle" type="Node" parent="StateChart/Root"] +[node name="Idle" type="Node" parent="StateChart/Root/Active"] script = ExtResource("6_bu01i") -[node name="on ChargePressed" type="Node" parent="StateChart/Root/Idle"] +[node name="on ChargePressed" type="Node" parent="StateChart/Root/Active/Idle"] script = ExtResource("7_epv8h") to = NodePath("../../Charging") event = &"charge_pressed" delay_in_seconds = "0.0" -[node name="when Moving" type="Node" parent="StateChart/Root/Idle"] +[node name="when Moving" type="Node" parent="StateChart/Root/Active/Idle"] script = ExtResource("7_epv8h") to = NodePath("../../Moving") guard = SubResource("Resource_ej40h") delay_in_seconds = "0.0" -[node name="Moving" type="Node" parent="StateChart/Root"] +[node name="Moving" type="Node" parent="StateChart/Root/Active"] script = ExtResource("6_bu01i") -[node name="when Stopped" type="Node" parent="StateChart/Root/Moving"] +[node name="when Stopped" type="Node" parent="StateChart/Root/Active/Moving"] script = ExtResource("7_epv8h") to = NodePath("../../Idle") guard = SubResource("Resource_637i1") delay_in_seconds = "0.0" -[node name="Charging" type="Node" parent="StateChart/Root"] +[node name="Charging" type="Node" parent="StateChart/Root/Active"] script = ExtResource("6_bu01i") -[node name="on ChargeReleased" type="Node" parent="StateChart/Root/Charging"] +[node name="on ChargeReleased" type="Node" parent="StateChart/Root/Active/Charging"] script = ExtResource("7_epv8h") to = NodePath("../../Moving") event = &"charge_released" delay_in_seconds = "0.0" -[node name="Winning" type="Node" parent="StateChart/Root"] +[node name="PoleSpinning" type="Node" parent="StateChart/Root/Active"] script = ExtResource("6_bu01i") -[node name="PoleSpinning" type="Node" parent="StateChart/Root"] -script = ExtResource("6_bu01i") - -[node name="Transition" type="Node" parent="StateChart/Root/PoleSpinning"] +[node name="Transition" type="Node" parent="StateChart/Root/Active/PoleSpinning"] script = ExtResource("7_epv8h") to = NodePath("../../Moving") event = &"charge_pressed" delay_in_seconds = "0.0" +[node name="Inactive" type="Node" parent="StateChart/Root"] +script = ExtResource("5_ox6hb") +initial_state = NodePath("Winning") + +[node name="Winning" type="Node" parent="StateChart/Root/Inactive"] +script = ExtResource("6_bu01i") + [connection signal="bounced" from="." to="Sounds/WallBounce" method="play"] [connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" method="play"] [connection signal="shot" from="." to="Sounds/Shoot" method="play"] -[connection signal="state_physics_processing" from="StateChart/Root/Idle" to="." method="_apply_gravity"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"] -[connection signal="state_entered" from="StateChart/Root/Charging" to="." method="_start_charge"] -[connection signal="state_entered" from="StateChart/Root/Charging" to="Sounds/ChargeStart" method="play"] -[connection signal="state_exited" from="StateChart/Root/Charging" to="." method="_end_charge"] -[connection signal="state_physics_processing" from="StateChart/Root/Charging" to="." method="_update_charge"] -[connection signal="state_entered" from="StateChart/Root/Winning" to="." method="_start_winning"] -[connection signal="state_entered" from="StateChart/Root/PoleSpinning" to="." method="_start_pole_spin"] -[connection signal="state_exited" from="StateChart/Root/PoleSpinning" to="." method="_end_pole_spin"] -[connection signal="state_physics_processing" from="StateChart/Root/PoleSpinning" to="." method="_process_pole_spin"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/Idle" to="." method="_apply_gravity"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/Moving" to="." method="_slow_to_stop"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/Moving" to="." method="_apply_gravity"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/Moving" to="." method="_bounce_on_walls"] +[connection signal="state_entered" from="StateChart/Root/Active/Charging" to="." method="_start_charge"] +[connection signal="state_entered" from="StateChart/Root/Active/Charging" to="Sounds/ChargeStart" method="play"] +[connection signal="state_exited" from="StateChart/Root/Active/Charging" to="." method="_end_charge"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/Charging" to="." method="_update_charge"] +[connection signal="state_entered" from="StateChart/Root/Active/PoleSpinning" to="." method="_start_pole_spin"] +[connection signal="state_exited" from="StateChart/Root/Active/PoleSpinning" to="." method="_end_pole_spin"] +[connection signal="state_physics_processing" from="StateChart/Root/Active/PoleSpinning" to="." method="_process_pole_spin"] +[connection signal="state_entered" from="StateChart/Root/Inactive/Winning" to="." method="_start_winning"] diff --git a/objects/skull.tscn b/objects/skull.tscn index 0a14a59..c7407a9 100644 --- a/objects/skull.tscn +++ b/objects/skull.tscn @@ -5,12 +5,11 @@ [ext_resource type="AudioStream" uid="uid://cgotekctoej7m" path="res://assets/sounds/enemies/skull_death.ogg" id="3_6ybas"] [sub_resource type="CylinderShape3D" id="CylinderShape3D_ictao"] -height = 1.0 -radius = 0.8 +height = 0.5 +radius = 0.4 [sub_resource type="CylinderShape3D" id="CylinderShape3D_cdksx"] -height = 1.0 -radius = 0.95 +height = 0.5 [node name="Boney" type="CharacterBody3D" node_paths=PackedStringArray("model", "death_sound")] script = ExtResource("1_ledhy") @@ -23,10 +22,10 @@ model = NodePath("Model") death_sound = NodePath("DeathSound") [node name="Model" parent="." instance=ExtResource("2_lwsb0")] -transform = Transform3D(2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 1.5, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75, 0) [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_ictao") [node name="PlayerDetector" type="Area3D" parent="."] @@ -35,7 +34,7 @@ collision_mask = 16 monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) shape = SubResource("CylinderShape3D_cdksx") [node name="DeathSound" type="AudioStreamPlayer3D" parent="."] diff --git a/objects/uncanny_cat.gd b/objects/uncanny_cat.gd index baa8cff..beaf36a 100644 --- a/objects/uncanny_cat.gd +++ b/objects/uncanny_cat.gd @@ -1,9 +1,13 @@ extends CharacterBody3D +signal player_caught + + @export var acceleration: float @export var speed: float @export var vertical_speed: float +@export var jumpscare: CanvasLayer func _physics_process(delta: float) -> void: @@ -24,3 +28,8 @@ func _physics_process(delta: float) -> void: var col = move_and_collide(velocity * delta) if col: velocity = velocity.bounce(col.get_normal()) + + +func _on_player_detector_body_entered(body: Node3D) -> void: + if body is Player: + player_caught.emit() diff --git a/objects/uncanny_cat.tscn b/objects/uncanny_cat.tscn index c36c2ad..9ad6ad5 100644 --- a/objects/uncanny_cat.tscn +++ b/objects/uncanny_cat.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=3 uid="uid://bndtsprfwrkau"] +[gd_scene load_steps=7 format=3 uid="uid://bndtsprfwrkau"] [ext_resource type="Script" uid="uid://1mhmcaluavhg" path="res://objects/uncanny_cat.gd" id="1_bsm3e"] [ext_resource type="Texture2D" uid="uid://c2a63sfnh6il" path="res://assets/textures/chaser/uncanny.png" id="2_eotxf"] +[ext_resource type="AudioStream" uid="uid://l6u7480xhrrl" path="res://assets/sounds/enemies/uncanny_jumpscare.ogg" id="3_ixuei"] [sub_resource type="SphereShape3D" id="SphereShape3D_eotxf"] radius = 0.45 @@ -19,7 +20,7 @@ billboard_mode = 1 [sub_resource type="SphereShape3D" id="SphereShape3D_ixuei"] -[node name="UncannyCat" type="CharacterBody3D"] +[node name="UncannyCat" type="CharacterBody3D" node_paths=PackedStringArray("jumpscare")] collision_layer = 32 collision_mask = 32 motion_mode = 1 @@ -27,6 +28,7 @@ script = ExtResource("1_bsm3e") acceleration = 0.6 speed = 1.5 vertical_speed = 0.5 +jumpscare = NodePath("JumpscareLayer") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] shape = SubResource("SphereShape3D_eotxf") @@ -45,3 +47,25 @@ monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerDetector"] shape = SubResource("SphereShape3D_ixuei") + +[node name="JumpscareLayer" type="CanvasLayer" parent="."] +layer = 2 +visible = false + +[node name="Jumpscare" type="TextureRect" parent="JumpscareLayer"] +texture_filter = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_eotxf") +stretch_mode = 6 + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource("3_ixuei") +bus = &"Sounds" + +[connection signal="player_caught" from="." to="JumpscareLayer" method="show"] +[connection signal="player_caught" from="." to="AudioStreamPlayer" method="play"] +[connection signal="body_entered" from="PlayerDetector" to="." method="_on_player_detector_body_entered"] diff --git a/project.godot b/project.godot index 391a0aa..39784fe 100644 --- a/project.godot +++ b/project.godot @@ -59,3 +59,5 @@ charge_shot={ textures/canvas_textures/default_texture_filter=0 renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" +textures/decals/filter=0 +textures/light_projectors/filter=0 diff --git a/ui/game_ui.tscn b/ui/game_ui.tscn new file mode 100644 index 0000000..8fdc633 --- /dev/null +++ b/ui/game_ui.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=3 uid="uid://b1yer7h40imop"] + +[ext_resource type="Texture2D" uid="uid://bopw8k88m2g1w" path="res://assets/textures/ui/logo.png" id="1_dcmab"] + +[node name="SideBar" type="Control"] +custom_minimum_size = Vector2(92, 216) +layout_mode = 3 +anchors_preset = 0 +size_flags_horizontal = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer"] +layout_mode = 2 +texture = ExtResource("1_dcmab") +stretch_mode = 2