From fb9417a1d8e8af6a74126f78cf802e84c50fd5b6 Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 22 Jul 2025 14:40:57 +0200 Subject: [PATCH] feat: implemented enemy wretched attack animation and damage boxes --- modules/wave_survival/damage_box.cpp | 4 +- .../animations/enemies/wretched/attack.res | Bin 20416 -> 6992 bytes .../models/enemies/model_scenes/wretched.tscn | 74 +++++++++++++++++ project/maps/testmap.tscn | 8 ++ project/objects/enemies/enemy_wretched.tscn | 76 ++---------------- project/objects/player.tscn | 31 +++---- 6 files changed, 108 insertions(+), 85 deletions(-) create mode 100644 project/assets/models/enemies/model_scenes/wretched.tscn diff --git a/modules/wave_survival/damage_box.cpp b/modules/wave_survival/damage_box.cpp index d277ae6b..a25f487a 100644 --- a/modules/wave_survival/damage_box.cpp +++ b/modules/wave_survival/damage_box.cpp @@ -13,7 +13,7 @@ void DamageBox::attack_motion_begin() { void DamageBox::attack_motion_end() { this->already_hit.clear(); - set_monitoring(true); + set_monitoring(false); } void DamageBox::on_body_entered(Node3D *node) { @@ -34,6 +34,8 @@ void DamageBox::_notification(int what) { return; case NOTIFICATION_ENTER_TREE: connect("body_entered", callable_mp(this, &self_type::on_body_entered)); + connect("area_entered", callable_mp(this, &self_type::on_body_entered)); + set_monitoring(false); return; } } diff --git a/project/assets/animations/enemies/wretched/attack.res b/project/assets/animations/enemies/wretched/attack.res index 70aae4adf0db5dc1a1179e3dae072417bfd7aa7c..0e7540b07f3c0e24a5669daa8555c4ad7bb107e9 100644 GIT binary patch literal 6992 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 WMr8&?Iu?4WBh_E1nfPi8F#je;JM2v}=U~Ex} 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 L&mtK9-+liF0rD#s diff --git a/project/assets/models/enemies/model_scenes/wretched.tscn b/project/assets/models/enemies/model_scenes/wretched.tscn new file mode 100644 index 00000000..70ef0b58 --- /dev/null +++ b/project/assets/models/enemies/model_scenes/wretched.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=6 format=3 uid="uid://crtgy2rph5to2"] + +[ext_resource type="PackedScene" uid="uid://ho7wwawj6s65" path="res://assets/models/enemies/wretched.blend" id="1_w0sx6"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_w0sx6"] +size = Vector3(0.35351563, 0.8721161, 0.29003906) + +[sub_resource type="BoxShape3D" id="BoxShape3D_a12c4"] +size = Vector3(0.37524414, 0.64245605, 0.38867188) + +[sub_resource type="BoxShape3D" id="BoxShape3D_2le77"] +size = Vector3(0.24902344, 0.42858887, 0.2619629) + +[sub_resource type="BoxShape3D" id="BoxShape3D_yvqru"] +size = Vector3(0.86776733, 0.107666016, 0.11816406) + +[node name="wretched" instance=ExtResource("1_w0sx6")] + +[node name="Hitbox" type="Hitbox" parent="Character/Skeleton3D" index="2"] +transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, 6.209e-17, 0.097789526, 0.004007945) +collision_layer = 6 +collision_mask = 0 +monitoring = false + +[node name="CollisionShape3D2" type="CollisionShape3D" parent="Character/Skeleton3D/Hitbox" index="0"] +transform = Transform3D(1, 5.875464e-21, 0, 6.2038546e-25, 1.0000037, 0, 0, 0, 1.0000037, -2.2362435e-16, 0.35283393, -0.013339132) +shape = SubResource("BoxShape3D_w0sx6") + +[node name="SpineAttach" type="BoneAttachment3D" parent="Character/Skeleton3D" index="3"] +transform = Transform3D(1, -2.2202518e-16, 2.1910394e-16, 2.1910388e-16, 0.9999122, 0.013243955, -2.220252e-16, -0.0132439565, 0.99991226, -4.1256417e-17, 1.1546816, -0.0027124744) +bone_name = "spine.002" +bone_idx = 3 + +[node name="Hitbox" type="Hitbox" parent="Character/Skeleton3D/SpineAttach" index="0"] +transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, -2.1234107e-16, -1.1546164, -0.012580322) +collision_layer = 4 +collision_mask = 0 +monitoring = false + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Character/Skeleton3D/SpineAttach/Hitbox" index="0"] +transform = Transform3D(1, -2.2202515e-16, 2.1910396e-16, 2.1910385e-16, 0.9999122, 0.0132439565, -2.2202522e-16, -0.013243958, 0.99991226, 0.0023498535, 1.1967317, -0.0032694251) +shape = SubResource("BoxShape3D_a12c4") + +[node name="HeadAttach" type="BoneAttachment3D" parent="Character/Skeleton3D" index="4"] +transform = Transform3D(0.9999988, -0.0007823897, 0.0013344375, 0.0007271601, 0.99916273, 0.040897816, -0.0013653187, -0.040896796, 0.9991622, -1.3069549e-16, 1.5574794, -0.0040687313) +bone_name = "Neck" +bone_idx = 5 + +[node name="Hitbox" type="Hitbox" parent="Character/Skeleton3D/HeadAttach" index="0"] +transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, -2.1234107e-16, -1.1546164, -0.012580322) +collision_layer = 4 +collision_mask = 0 +monitoring = false +damage_modifier = 2.0 + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Character/Skeleton3D/HeadAttach/Hitbox" index="0"] +transform = Transform3D(1, -2.2202515e-16, 2.1910393e-16, 2.1910723e-16, 0.9999161, 0.013243863, -2.2202641e-16, -0.013243858, 0.9999161, -7.644832e-17, 1.3035276, -0.01432839) +shape = SubResource("BoxShape3D_2le77") + +[node name="BoneAttachment3D" type="BoneAttachment3D" parent="Character/Skeleton3D" index="5"] +transform = Transform3D(0.10797773, -0.79005337, 0.60345376, 0.4003794, 0.5901581, 0.70100564, -0.9099653, 0.16591746, 0.38004512, 0.28507733, 1.5014915, -0.21731633) +bone_name = "hand.R" +bone_idx = 9 + +[node name="DamageBox" type="DamageBox" parent="Character/Skeleton3D/BoneAttachment3D" index="0"] +transform = Transform3D(0.8168715, 0.42058483, 0.39475223, -0.47940335, 0.87559944, 0.059143633, -0.32076997, -0.2375583, 0.91688204, -0.0065350886, 0.06456717, -0.0151789) +collision_layer = 0 +collision_mask = 8 +monitoring = false +monitorable = false + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Character/Skeleton3D/BoneAttachment3D/DamageBox" index="0"] +transform = Transform3D(1, -1.1175919e-06, -1.7881156e-06, 1.1175778e-06, 1, -7.912447e-06, 1.7881245e-06, 7.912445e-06, 1, -0.20445287, -3.5762787e-07, -2.682209e-07) +shape = SubResource("BoxShape3D_yvqru") diff --git a/project/maps/testmap.tscn b/project/maps/testmap.tscn index 39169044..8e816859 100644 --- a/project/maps/testmap.tscn +++ b/project/maps/testmap.tscn @@ -414,3 +414,11 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.44426918, -0.0014839172, -1 [node name="NpcUnit" parent="." node_paths=PackedStringArray("patrol_path") instance=ExtResource("3_7ng1a")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.6569076, -9.536743e-07, 13.002816) patrol_path = NodePath("../PatrolPath") + +[node name="NpcUnit2" parent="." node_paths=PackedStringArray("patrol_path") instance=ExtResource("3_7ng1a")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.306059, 9.536743e-07, -5.424572) +patrol_path = NodePath("../PatrolPath") + +[node name="NpcUnit3" parent="." node_paths=PackedStringArray("patrol_path") instance=ExtResource("3_7ng1a")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.691285, 9.536743e-07, -16.904852) +patrol_path = NodePath("../PatrolPath") diff --git a/project/objects/enemies/enemy_wretched.tscn b/project/objects/enemies/enemy_wretched.tscn index a89cb911..34587353 100644 --- a/project/objects/enemies/enemy_wretched.tscn +++ b/project/objects/enemies/enemy_wretched.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=8 format=3 uid="uid://dqlqgk1veyos8"] +[gd_scene load_steps=4 format=3 uid="uid://dqlqgk1veyos8"] -[ext_resource type="PackedScene" uid="uid://ho7wwawj6s65" path="res://assets/models/enemies/wretched.blend" id="2_ei3ai"] +[ext_resource type="PackedScene" uid="uid://crtgy2rph5to2" path="res://assets/models/enemies/model_scenes/wretched.tscn" id="1_qot2n"] [sub_resource type="GDScript" id="GDScript_qot2n"] script/source = "extends EnemyWretched @@ -9,72 +9,21 @@ func _on_health_status_death() -> void: queue_free(); " -[sub_resource type="BoxShape3D" id="BoxShape3D_qot2n"] -size = Vector3(0.37524414, 0.64245605, 0.38867188) - -[sub_resource type="BoxShape3D" id="BoxShape3D_ei3ai"] -size = Vector3(0.24902344, 0.42858887, 0.2619629) - -[sub_resource type="BoxShape3D" id="BoxShape3D_cpfor"] -size = Vector3(0.32873535, 0.107666016, 0.11816406) - [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ng1ul"] -[sub_resource type="BoxShape3D" id="BoxShape3D_sivli"] -size = Vector3(0.35351563, 0.8721161, 0.29003906) - [node name="EnemyWretched" type="EnemyWretched"] script = SubResource("GDScript_qot2n") -[node name="wretched" parent="." instance=ExtResource("2_ei3ai")] +[node name="wretched" parent="." instance=ExtResource("1_qot2n")] -[node name="SpineAttach" type="BoneAttachment3D" parent="wretched/Character/Skeleton3D" index="2"] -transform = Transform3D(1, -2.2202518e-16, 2.1910394e-16, 2.1910388e-16, 0.9999122, 0.013243955, -2.220252e-16, -0.0132439565, 0.99991226, -4.1256417e-17, 1.1546816, -0.0027124744) -bone_name = "spine.002" -bone_idx = 3 +[node name="Hitbox" parent="wretched/Character/Skeleton3D" index="2" node_paths=PackedStringArray("health")] +health = NodePath("../../../../HealthStatus") -[node name="Hitbox" type="Hitbox" parent="wretched/Character/Skeleton3D/SpineAttach" node_paths=PackedStringArray("health")] -transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, -2.1234107e-16, -1.1546164, -0.012580322) -collision_layer = 6 -collision_mask = 0 -monitoring = false +[node name="Hitbox" parent="wretched/Character/Skeleton3D/SpineAttach" index="0" node_paths=PackedStringArray("health")] health = NodePath("../../../../../HealthStatus") -[node name="CollisionShape3D" type="CollisionShape3D" parent="wretched/Character/Skeleton3D/SpineAttach/Hitbox"] -transform = Transform3D(1, -2.2202515e-16, 2.1910396e-16, 2.1910385e-16, 0.9999122, 0.0132439565, -2.2202522e-16, -0.013243958, 0.99991226, 0.0023498535, 1.1967317, -0.0032694251) -shape = SubResource("BoxShape3D_qot2n") - -[node name="HeadAttach" type="BoneAttachment3D" parent="wretched/Character/Skeleton3D" index="3"] -transform = Transform3D(0.9999988, -0.0007823897, 0.0013344375, 0.0007271601, 0.99916273, 0.040897816, -0.0013653187, -0.040896796, 0.9991622, -1.3069549e-16, 1.5574794, -0.0040687313) -bone_name = "Neck" -bone_idx = 5 - -[node name="Hitbox" type="Hitbox" parent="wretched/Character/Skeleton3D/HeadAttach" node_paths=PackedStringArray("health")] -transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, -2.1234107e-16, -1.1546164, -0.012580322) -collision_layer = 6 -collision_mask = 0 -monitoring = false +[node name="Hitbox" parent="wretched/Character/Skeleton3D/HeadAttach" index="0" node_paths=PackedStringArray("health")] health = NodePath("../../../../../HealthStatus") -damage_modifier = 2.0 - -[node name="CollisionShape3D" type="CollisionShape3D" parent="wretched/Character/Skeleton3D/HeadAttach/Hitbox"] -transform = Transform3D(1, -2.2202515e-16, 2.1910393e-16, 2.1910723e-16, 0.9999161, 0.013243863, -2.2202641e-16, -0.013243858, 0.9999161, -7.644832e-17, 1.3035276, -0.01432839) -shape = SubResource("BoxShape3D_ei3ai") - -[node name="BoneAttachment3D" type="BoneAttachment3D" parent="wretched/Character/Skeleton3D" index="4"] -transform = Transform3D(0.10797773, -0.79005337, 0.60345376, 0.4003794, 0.5901581, 0.70100564, -0.9099653, 0.16591746, 0.38004512, 0.28507733, 1.5014915, -0.21731633) -bone_name = "hand.R" -bone_idx = 9 - -[node name="Area3D" type="Area3D" parent="wretched/Character/Skeleton3D/BoneAttachment3D"] -transform = Transform3D(0.81687146, 0.42058486, 0.39475226, -0.47940338, 0.8755994, 0.059143633, -0.3207699, -0.2375583, 0.91688204, -0.0065350886, 0.06456717, -0.0151789) -collision_layer = 0 -collision_mask = 10 -monitorable = false - -[node name="CollisionShape3D" type="CollisionShape3D" parent="wretched/Character/Skeleton3D/BoneAttachment3D/Area3D"] -transform = Transform3D(1, -5.722046e-06, -4.0163286e-08, 2.3841858e-07, 1.0000094, -2.0547304e-08, 2.438901e-07, 7.899827e-06, 1, -0.29290777, -2.9802322e-07, -2.3841858e-07) -shape = SubResource("BoxShape3D_cpfor") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) @@ -95,17 +44,6 @@ transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 1 unique_name_in_owner = true health = 2 -[node name="Hitbox" type="Hitbox" parent="." node_paths=PackedStringArray("health")] -transform = Transform3D(1, 2.1910389e-16, -2.2202524e-16, -2.2202514e-16, 0.9999124, -0.013243958, 2.1910394e-16, 0.01324396, 0.9999123, 6.209e-17, 0.097789526, 0.004007945) -collision_layer = 6 -collision_mask = 0 -monitoring = false -health = NodePath("../HealthStatus") - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="Hitbox"] -transform = Transform3D(1, 5.875464e-21, 0, 6.2038546e-25, 1.0000037, 0, 0, 0, 1.0000037, -2.2362435e-16, 0.35283393, -0.013339132) -shape = SubResource("BoxShape3D_sivli") - [connection signal="death" from="HealthStatus" to="." method="_on_health_status_death"] [editable path="wretched"] diff --git a/project/objects/player.tscn b/project/objects/player.tscn index aa535842..c590137a 100644 --- a/project/objects/player.tscn +++ b/project/objects/player.tscn @@ -2,11 +2,6 @@ [ext_resource type="PackedScene" uid="uid://ce40pq785yoyi" path="res://objects/weapons/rifle.tscn" id="1_eqqp1"] -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_bxedw"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_eqqp1"] -radius = 0.3173828 - [sub_resource type="GDScript" id="GDScript_eqqp1"] script/source = "extends HealthStatus @@ -14,24 +9,33 @@ func _on_health_changed(remaining: int, delta: int) -> void: print(\"Player Health Changed:\", delta, \"remaining:\", remaining) " +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_bxedw"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_eqqp1"] +radius = 0.3173828 + [node name="PlayerBody" type="PlayerBody"] -[node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) -shape = SubResource("CapsuleShape3D_bxedw") - -[node name="PlayerInput" type="PlayerInput" parent="."] -unique_name_in_owner = true - [node name="PlayerCamera" type="PlayerCamera" parent="."] unique_name_in_owner = true transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 1.60811, 0) fov = 60.0 +[node name="PlayerInput" type="PlayerInput" parent="."] +unique_name_in_owner = true + [node name="WeaponInventory" type="WeaponInventory" parent="."] unique_name_in_owner = true starting_weapon = ExtResource("1_eqqp1") +[node name="HealthStatus" type="HealthStatus" parent="."] +health = 10 +script = SubResource("GDScript_eqqp1") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +shape = SubResource("CapsuleShape3D_bxedw") + [node name="Hitbox" type="Hitbox" parent="." node_paths=PackedStringArray("health")] collision_layer = 8 collision_mask = 0 @@ -42,7 +46,4 @@ health = NodePath("../HealthStatus") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) shape = SubResource("CapsuleShape3D_eqqp1") -[node name="HealthStatus" type="HealthStatus" parent="."] -script = SubResource("GDScript_eqqp1") - [connection signal="health_changed" from="HealthStatus" to="HealthStatus" method="_on_health_changed"]