Attack and Hit animation

pull/2/head
Sascha 2024-05-27 11:47:02 +07:00
parent fed74e2f90
commit 58d8d4c21b
10 changed files with 306 additions and 325 deletions

@ -16,10 +16,6 @@ config/features=PackedStringArray("4.3", "Forward Plus")
boot_splash/image="res://resources/images/traditional-dark.png"
config/icon="res://resources/images/icon.svg"
[display]
window/size/mode=3
[input]
forward={

File diff suppressed because one or more lines are too long

@ -34,10 +34,14 @@ player = NodePath("../Player")
[node name="Player" parent="." instance=ExtResource("7_iwqlu")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.852, 1, 6.862)
unit_name = "Player"
speed = 8.0
acceleration = 8.0
[node name="Skeleton_Warrior_new" parent="." node_paths=PackedStringArray("nearest_player") instance=ExtResource("8_b6x6f")]
[node name="Skeleton_Warrior_new" parent="." node_paths=PackedStringArray("player") instance=ExtResource("8_b6x6f")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 20, 1, 6)
nearest_player = NodePath("../Player")
player = NodePath("../Player")
unit_name = "Skeleton_Warrior"
[node name="torch_mounted" parent="." instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.03394, 2.9024, 1.25148)

@ -1,4 +1,4 @@
[gd_scene load_steps=147 format=4 uid="uid://dtehhqrqtplan"]
[gd_scene load_steps=154 format=4 uid="uid://dtehhqrqtplan"]
[ext_resource type="PackedScene" uid="uid://bd5bo4yc4n4in" path="res://resources/models/adventures/Knight.glb" id="1_fwuyc"]
[ext_resource type="Script" path="res://scripts/player.gd" id="2_51yjr"]
@ -31284,6 +31284,15 @@ loop_mode = 0
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hx644"]
animation = &"Death_A"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6arw4"]
animation = &"Death_B"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_4ykck"]
animation = &"Hit_A"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_2xwwl"]
animation = &"Hit_B"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_v8ipv"]
animation = &"Idle"
@ -31328,10 +31337,6 @@ advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0pn5a"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_u1hnl"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ddrtj"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vokpi"]
@ -31404,13 +31409,27 @@ switch_mode = 2
advance_mode = 2
advance_condition = &"not_blocking"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_skg6m"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_sufwf"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5gf1y"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_gjm3q"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_vc3og"]
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_vnar2"]
states/1h_attack_chop/node = SubResource("AnimationNodeAnimation_bp8ho")
states/1h_attack_chop/position = Vector2(576, -119)
states/1h_attack_chop/position = Vector2(758, -57)
states/1h_slice_diagonal/node = SubResource("AnimationNodeAnimation_l1j8g")
states/1h_slice_diagonal/position = Vector2(436, -119)
states/1h_slice_diagonal/position = Vector2(609, -57)
states/1h_slice_horizontal/node = SubResource("AnimationNodeAnimation_petvt")
states/1h_slice_horizontal/position = Vector2(716, -119)
states/1h_slice_horizontal/position = Vector2(912, -57)
states/Block_Attack/node = SubResource("AnimationNodeAnimation_bvvid")
states/Block_Attack/position = Vector2(436, 273.814)
states/Block_Hit/node = SubResource("AnimationNodeAnimation_2h5uv")
@ -31419,17 +31438,23 @@ states/Blocking/node = SubResource("AnimationNodeAnimation_k3cng")
states/Blocking/position = Vector2(318, 187)
states/Death_A/node = SubResource("AnimationNodeAnimation_hx644")
states/Death_A/position = Vector2(748, 100)
states/Death_B/node = SubResource("AnimationNodeAnimation_6arw4")
states/Death_B/position = Vector2(753, 143.814)
states/Hit_A/node = SubResource("AnimationNodeAnimation_4ykck")
states/Hit_A/position = Vector2(17, -40.186)
states/Hit_B/node = SubResource("AnimationNodeAnimation_2xwwl")
states/Hit_B/position = Vector2(143, -40.186)
states/IWR/node = SubResource("AnimationNodeBlendSpace2D_vsgt8")
states/IWR/position = Vector2(531, 100)
states/Interact/node = SubResource("AnimationNodeAnimation_0ujxg")
states/Interact/position = Vector2(201, -33)
states/Interact/position = Vector2(290, -103)
states/Jump_Idle/node = SubResource("AnimationNodeAnimation_qnt8j")
states/Jump_Idle/position = Vector2(782, 283)
states/Jump_Land/node = SubResource("AnimationNodeAnimation_k0lhp")
states/Jump_Land/position = Vector2(900, 283)
states/Jump_Start/node = SubResource("AnimationNodeAnimation_n2bl3")
states/Jump_Start/position = Vector2(658, 283)
transitions = ["Start", "IWR", SubResource("AnimationNodeStateMachineTransition_l0xk8"), "IWR", "Death_A", SubResource("AnimationNodeStateMachineTransition_0pn5a"), "Death_A", "End", SubResource("AnimationNodeStateMachineTransition_u1hnl"), "IWR", "Interact", SubResource("AnimationNodeStateMachineTransition_ddrtj"), "Interact", "IWR", SubResource("AnimationNodeStateMachineTransition_vokpi"), "IWR", "1h_slice_diagonal", SubResource("AnimationNodeStateMachineTransition_w32h3"), "1h_slice_diagonal", "IWR", SubResource("AnimationNodeStateMachineTransition_x8rkg"), "IWR", "1h_attack_chop", SubResource("AnimationNodeStateMachineTransition_ai0h0"), "1h_attack_chop", "IWR", SubResource("AnimationNodeStateMachineTransition_flmvj"), "IWR", "1h_slice_horizontal", SubResource("AnimationNodeStateMachineTransition_hnfj8"), "1h_slice_horizontal", "IWR", SubResource("AnimationNodeStateMachineTransition_17t07"), "IWR", "Jump_Start", SubResource("AnimationNodeStateMachineTransition_4j7ud"), "Jump_Start", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_mgjn7"), "Jump_Idle", "Jump_Land", SubResource("AnimationNodeStateMachineTransition_eh75m"), "Jump_Land", "IWR", SubResource("AnimationNodeStateMachineTransition_qllfg"), "IWR", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_vq1x0"), "IWR", "Blocking", SubResource("AnimationNodeStateMachineTransition_pnrta"), "Blocking", "IWR", SubResource("AnimationNodeStateMachineTransition_hku22"), "Blocking", "Block_Hit", SubResource("AnimationNodeStateMachineTransition_ghj3a"), "Block_Hit", "Blocking", SubResource("AnimationNodeStateMachineTransition_os6oe"), "Blocking", "Block_Attack", SubResource("AnimationNodeStateMachineTransition_dips5"), "Block_Attack", "Blocking", SubResource("AnimationNodeStateMachineTransition_ar41x"), "Block_Attack", "IWR", SubResource("AnimationNodeStateMachineTransition_sxuk5")]
transitions = ["Start", "IWR", SubResource("AnimationNodeStateMachineTransition_l0xk8"), "IWR", "Death_A", SubResource("AnimationNodeStateMachineTransition_0pn5a"), "IWR", "Interact", SubResource("AnimationNodeStateMachineTransition_ddrtj"), "Interact", "IWR", SubResource("AnimationNodeStateMachineTransition_vokpi"), "IWR", "1h_slice_diagonal", SubResource("AnimationNodeStateMachineTransition_w32h3"), "1h_slice_diagonal", "IWR", SubResource("AnimationNodeStateMachineTransition_x8rkg"), "IWR", "1h_attack_chop", SubResource("AnimationNodeStateMachineTransition_ai0h0"), "1h_attack_chop", "IWR", SubResource("AnimationNodeStateMachineTransition_flmvj"), "IWR", "1h_slice_horizontal", SubResource("AnimationNodeStateMachineTransition_hnfj8"), "1h_slice_horizontal", "IWR", SubResource("AnimationNodeStateMachineTransition_17t07"), "IWR", "Jump_Start", SubResource("AnimationNodeStateMachineTransition_4j7ud"), "Jump_Start", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_mgjn7"), "Jump_Idle", "Jump_Land", SubResource("AnimationNodeStateMachineTransition_eh75m"), "Jump_Land", "IWR", SubResource("AnimationNodeStateMachineTransition_qllfg"), "IWR", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_vq1x0"), "IWR", "Blocking", SubResource("AnimationNodeStateMachineTransition_pnrta"), "Blocking", "IWR", SubResource("AnimationNodeStateMachineTransition_hku22"), "Blocking", "Block_Hit", SubResource("AnimationNodeStateMachineTransition_ghj3a"), "Block_Hit", "Blocking", SubResource("AnimationNodeStateMachineTransition_os6oe"), "Blocking", "Block_Attack", SubResource("AnimationNodeStateMachineTransition_dips5"), "Block_Attack", "Blocking", SubResource("AnimationNodeStateMachineTransition_ar41x"), "Block_Attack", "IWR", SubResource("AnimationNodeStateMachineTransition_sxuk5"), "IWR", "Hit_A", SubResource("AnimationNodeStateMachineTransition_skg6m"), "Hit_A", "IWR", SubResource("AnimationNodeStateMachineTransition_sufwf"), "IWR", "Hit_B", SubResource("AnimationNodeStateMachineTransition_5gf1y"), "Hit_B", "IWR", SubResource("AnimationNodeStateMachineTransition_gjm3q"), "IWR", "Death_B", SubResource("AnimationNodeStateMachineTransition_vc3og")]
graph_offset = Vector2(-336, -146.186)
[node name="Knight" instance=ExtResource("1_fwuyc")]
@ -31445,130 +31470,95 @@ margin = 0.1
[node name="Skeleton3D" parent="Rig" index="0"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
bones/0/position = Vector3(0, 0.000155358, 0)
bones/0/rotation = Quaternion(-9.45753e-12, -0.000274707, -1.63809e-11, 1)
bones/1/position = Vector3(2.22295e-25, 0.373103, -9.32374e-19)
bones/1/rotation = Quaternion(0.000375813, 0.042994, 2.03957e-05, 0.999075)
bones/2/rotation = Quaternion(0.000451876, -0.000266487, 2.23781e-06, 1)
bones/3/rotation = Quaternion(0.000181684, 7.61394e-05, -6.67731e-05, 1)
bones/4/position = Vector3(0.211922, 0.134053, -0.00016754)
bones/4/rotation = Quaternion(-0.552024, -0.0604403, -0.649113, 0.519874)
bones/4/rotation = Quaternion(-0.514121, -0.485468, -0.485468, 0.514122)
bones/4/scale = Vector3(0.999999, 0.999999, 1)
bones/5/rotation = Quaternion(2.93065e-08, -5.59564e-08, -0.491746, 0.870739)
bones/5/rotation = Quaternion(1.64805e-09, -5.95036e-08, -0.0552855, 0.998471)
bones/6/rotation = Quaternion(-9.73784e-11, -2.98437e-10, 0.0266581, 0.999645)
bones/6/scale = Vector3(1, 1, 1)
bones/7/rotation = Quaternion(-0.317102, -0.334691, 0.138274, 0.876532)
bones/8/position = Vector3(4.03524e-10, 0.0961252, -0.0575)
bones/8/rotation = Quaternion(0.00131521, 0.00165987, -0.700764, 0.71339)
bones/8/rotation = Quaternion(1.60975e-09, 1.60975e-09, -0.707107, 0.707107)
bones/8/scale = Vector3(1, 1, 1)
bones/14/position = Vector3(-0.211992, 0.134088, -0.00018636)
bones/14/rotation = Quaternion(-0.610832, 0.0808178, 0.623598, 0.481122)
bones/14/rotation = Quaternion(-0.514121, 0.485468, 0.485468, 0.514122)
bones/14/scale = Vector3(0.999999, 0.999999, 1)
bones/15/rotation = Quaternion(1.16132e-08, 6.62298e-08, 0.515534, 0.856869)
bones/15/rotation = Quaternion(1.64805e-09, 5.95036e-08, 0.0552855, 0.998471)
bones/16/rotation = Quaternion(-9.73784e-11, 2.98437e-10, -0.0266581, 0.999645)
bones/16/scale = Vector3(1, 1, 1)
bones/17/rotation = Quaternion(-0.315765, 0.309403, -0.220525, 0.869443)
bones/18/position = Vector3(-1.54782e-08, 0.0961251, -0.0575)
bones/18/rotation = Quaternion(0.00426441, 0.00504141, 0.70181, 0.712334)
bones/18/rotation = Quaternion(1.60973e-09, -1.60973e-09, 0.707107, 0.707107)
bones/18/scale = Vector3(1, 1, 1)
bones/21/rotation = Quaternion(-0.000498545, -0.0308913, -7.04653e-05, 0.999523)
bones/24/position = Vector3(0.170945, 0.113587, -0.000369284)
bones/24/rotation = Quaternion(0.990455, 0.0831242, 0.0778535, 0.077646)
bones/24/rotation = Quaternion(0.999849, -7.13276e-08, -1.20427e-08, 0.0173732)
bones/24/scale = Vector3(1, 1, 1)
bones/25/rotation = Quaternion(0.37183, 6.27445e-08, -2.57396e-07, 0.928301)
bones/26/rotation = Quaternion(-0.607331, -0.201392, 0.0723253, 0.765088)
bones/27/rotation = Quaternion(-9.8221e-09, 0.920355, -0.391084, 7.82783e-08)
bones/25/rotation = Quaternion(0.106225, 6.86528e-08, -7.37699e-08, 0.994342)
bones/26/rotation = Quaternion(-0.455239, 1.61971e-08, -3.43568e-08, 0.890369)
bones/27/scale = Vector3(1, 1, 1)
bones/28/position = Vector3(-0.170945, 0.113587, 0.000369316)
bones/28/rotation = Quaternion(0.992288, -0.0327409, 0.0298627, 0.115763)
bones/28/rotation = Quaternion(0.999849, 7.42656e-08, -3.17263e-08, 0.0173732)
bones/28/scale = Vector3(1, 1, 1)
bones/29/rotation = Quaternion(0.416152, -6.03151e-08, 2.89699e-07, 0.909295)
bones/30/rotation = Quaternion(-0.635353, 0.112446, -0.0211755, 0.763698)
bones/31/rotation = Quaternion(3.03599e-08, 0.920355, -0.391084, -6.95348e-08)
bones/29/rotation = Quaternion(0.106225, -6.86529e-08, 7.37699e-08, 0.994342)
bones/31/rotation = Quaternion(3.04791e-08, 0.920355, -0.391084, -6.94849e-08)
bones/31/scale = Vector3(1, 1, 1)
bones/32/position = Vector3(0.170945, 0.292336, 0.575838)
bones/32/rotation = Quaternion(0.707107, -2.29302e-07, -4.60552e-08, 0.707107)
bones/33/position = Vector3(0.202061, 0.0264211, 0.202554)
bones/33/rotation = Quaternion(-0.704397, -7.07749e-08, -7.02862e-08, 0.709807)
bones/34/rest = Transform3D(-1, 4.66e-34, 1.42109e-14, -4.69932e-34, -1, -2.76642e-22, 1.42109e-14, -2.76642e-22, 1, 1.94581e-08, 0.362833, -2.42861e-15)
bones/34/position = Vector3(1.94503e-08, 0.362833, -2.42861e-15)
bones/34/rotation = Quaternion(9.6269e-09, 1.76581e-09, 0.98583, -0.167751)
bones/35/position = Vector3(-2.59494e-08, 0.213436, -5.15143e-09)
bones/35/rotation = Quaternion(-1.01283e-07, 0.391084, 0.920355, -3.34974e-08)
bones/36/position = Vector3(8.5477e-09, 0.16565, -2.42004e-09)
bones/37/rotation = Quaternion(1, -2.31451e-09, 1.99757e-07, 9.76329e-13)
bones/39/position = Vector3(-0.170945, 0.292336, 0.575838)
bones/34/position = Vector3(1.94581e-08, 0.362833, -2.42861e-15)
bones/34/rotation = Quaternion(7.10545e-15, -1.38321e-22, 1, -2.33983e-34)
bones/35/rotation = Quaternion(-1.04035e-07, 0.391084, 0.920355, -2.9526e-08)
bones/39/rotation = Quaternion(0.707107, -3.82385e-08, 1.45009e-07, 0.707107)
bones/40/position = Vector3(-0.170945, 0.0271627, 0.247107)
bones/40/rotation = Quaternion(-0.708259, -7.04226e-08, -7.06334e-08, 0.705953)
bones/40/rotation = Quaternion(-0.707107, -7.05285e-08, -7.05285e-08, 0.707107)
bones/41/rest = Transform3D(-1, 4.66e-34, 1.42109e-14, -4.69932e-34, -1, -2.76642e-22, 1.42109e-14, -2.76642e-22, 1, 1.94581e-08, 0.362833, 2.42861e-15)
bones/41/position = Vector3(1.94816e-08, 0.362833, 2.0002e-10)
bones/41/rotation = Quaternion(-5.81779e-09, 6.41802e-10, 0.99485, 0.101363)
bones/42/position = Vector3(-1.10904e-08, 0.213436, 8.32519e-11)
bones/42/rotation = Quaternion(-1.05787e-07, 0.391084, 0.920355, -2.58828e-08)
bones/43/position = Vector3(-6.30346e-09, 0.16565, 2.79023e-09)
bones/41/position = Vector3(1.94581e-08, 0.362833, 2.42861e-15)
bones/41/rotation = Quaternion(7.10545e-15, -1.38321e-22, 1, -2.33983e-34)
bones/42/rotation = Quaternion(-1.04035e-07, 0.391084, 0.920355, -2.95261e-08)
bones/43/rotation = Quaternion(-0.391084, -6.885e-08, -6.56287e-08, 0.920355)
bones/44/rotation = Quaternion(1, 3.75961e-09, 1.94881e-07, 7.41776e-09)
bones/46/position = Vector3(0.453378, 1.10598, -0.589302)
bones/46/rotation = Quaternion(-0.707107, 6.47045e-05, 6.47045e-05, 0.707107)
bones/47/position = Vector3(0.520813, 0.768268, -0.0570224)
bones/47/rotation = Quaternion(0.795441, 0.00177567, 0.606028, 0.000197405)
bones/48/position = Vector3(-0.45384, 1.10588, -0.588869)
bones/48/rotation = Quaternion(-0.707107, 6.47045e-05, 6.47045e-05, 0.707107)
bones/49/position = Vector3(-0.510787, 0.768268, 0.0601907)
bones/49/rotation = Quaternion(0.759165, -0.00170719, -0.650896, 0.00037696)
bones/49/rotation = Quaternion(0.5, -0.5, -0.5, -0.5)
[node name="1H_Sword_Offhand" parent="Rig/Skeleton3D" index="0"]
transform = Transform3D(-0.00259963, 0.263774, 0.96458, 0.999876, -0.0142655, 0.00659674, 0.0155008, 0.964478, -0.263705, 0.512683, 0.616287, -0.00169888)
transform = Transform3D(-0.999999, -2.36504e-07, -6.73119e-08, -7.7649e-08, -4.978e-07, 1, -2.25333e-07, 0.999999, 5.0424e-07, 0.883132, 1.04926, 0.0170111)
visible = false
[node name="1H_Sword_Offhand" parent="Rig/Skeleton3D/1H_Sword_Offhand" index="0"]
mesh = SubResource("ArrayMesh_rvosg")
[node name="Badge_Shield" parent="Rig/Skeleton3D" index="1"]
transform = Transform3D(-0.0025996, 0.263774, 0.96458, 0.999876, -0.014268, 0.0065974, 0.0155034, 0.964478, -0.263704, 0.663047, 0.617315, -0.0428066)
transform = Transform3D(-0.999999, 2.29867e-06, -7.34774e-07, -7.45113e-07, -7.04431e-07, 1, 2.30985e-06, 0.999999, 7.10872e-07, 0.883132, 1.20515, 0.0170112)
visible = false
[node name="Badge_Shield" parent="Rig/Skeleton3D/Badge_Shield" index="0"]
mesh = SubResource("ArrayMesh_0xags")
[node name="Rectangle_Shield" parent="Rig/Skeleton3D" index="2"]
transform = Transform3D(-0.0025996, 0.263774, 0.96458, 0.999876, -0.014268, 0.0065974, 0.0155034, 0.964478, -0.263704, 0.663047, 0.617315, -0.0428066)
transform = Transform3D(-0.999999, 2.29867e-06, -7.34774e-07, -7.45113e-07, -7.04431e-07, 1, 2.30985e-06, 0.999999, 7.10872e-07, 0.883132, 1.20515, 0.0170112)
visible = false
[node name="Rectangle_Shield" parent="Rig/Skeleton3D/Rectangle_Shield" index="0"]
mesh = SubResource("ArrayMesh_qr44s")
[node name="Round_Shield" parent="Rig/Skeleton3D" index="3"]
transform = Transform3D(-0.0025996, 0.263774, 0.96458, 0.999876, -0.014268, 0.0065974, 0.0155034, 0.964478, -0.263704, 0.663047, 0.617315, -0.0428066)
transform = Transform3D(-0.999999, 2.29867e-06, -7.34774e-07, -7.45113e-07, -7.04431e-07, 1, 2.30985e-06, 0.999999, 7.10872e-07, 0.883132, 1.20515, 0.0170112)
[node name="Round_Shield" parent="Rig/Skeleton3D/Round_Shield" index="0"]
mesh = SubResource("ArrayMesh_bb24p")
[node name="Spike_Shield" parent="Rig/Skeleton3D" index="4"]
transform = Transform3D(-0.0025996, 0.263774, 0.96458, 0.999876, -0.014268, 0.0065974, 0.0155034, 0.964478, -0.263704, 0.663047, 0.617315, -0.0428066)
transform = Transform3D(-0.999999, 2.29867e-06, -7.34774e-07, -7.45113e-07, -7.04431e-07, 1, 2.30985e-06, 0.999999, 7.10872e-07, 0.883132, 1.20515, 0.0170112)
[node name="Spike_Shield" parent="Rig/Skeleton3D/Spike_Shield" index="0"]
mesh = SubResource("ArrayMesh_jnwr3")
[node name="1H_Sword" parent="Rig/Skeleton3D" index="5"]
transform = Transform3D(-0.00102949, -0.164922, 0.986306, 0.999935, -0.0112845, -0.000844182, 0.0112698, 0.986241, 0.164923, -0.496661, 0.620232, 0.139329)
transform = Transform3D(0.999999, 3.55713e-07, -3.93153e-07, -3.96661e-07, -7.35878e-07, -1, -3.44542e-07, 0.999999, -7.42514e-07, -0.883132, 1.04926, 0.0333087)
[node name="1H_Sword" parent="Rig/Skeleton3D/1H_Sword" index="0"]
mesh = SubResource("ArrayMesh_dbq6c")
[node name="2H_Sword" parent="Rig/Skeleton3D" index="6"]
transform = Transform3D(-0.00102951, -0.164922, 0.986306, 0.999935, -0.0112845, -0.000844169, 0.0112698, 0.986241, 0.164923, -0.496661, 0.620232, 0.139329)
transform = Transform3D(0.999999, 3.4098e-07, -3.79467e-07, -3.82975e-07, -7.35878e-07, -1, -3.29809e-07, 0.999999, -7.42514e-07, -0.883132, 1.04926, 0.0333087)
[node name="Knight_Helmet" parent="Rig/Skeleton3D" index="7"]
transform = Transform3D(0.999729, 0.00031423, 0.0232901, -0.000290831, 0.999999, -0.00100804, -0.0232904, 0.00100099, 0.999728, 7.57521e-05, 1.18349, 0.00127761)
transform = Transform3D(1, -2.20965e-22, 1.69407e-21, 2.20965e-22, 1, 0, -1.69407e-21, 3.58732e-43, 1, 4.76837e-07, 1.21589, -1.08542e-07)
visible = false
[node name="Knight_Helmet" parent="Rig/Skeleton3D/Knight_Helmet" index="0"]
mesh = SubResource("ArrayMesh_o8mbo")
[node name="Knight_Cape" parent="Rig/Skeleton3D" index="8"]
transform = Transform3D(0.996382, 0.00022751, 0.0849816, -5.63621e-05, 0.999998, -0.00201633, -0.0849819, 0.00200425, 0.996381, 7.74803e-05, 1.18349, 0.00125197)
transform = Transform3D(1, 1.25214e-21, 0, -1.25214e-21, 1, 0, 0, 0, 1, 0, 1.21589, -1.4066e-07)
visible = false
[node name="Knight_Cape" parent="Rig/Skeleton3D/Knight_Cape" index="0"]
@ -31610,9 +31600,9 @@ libraries = {
[node name="AnimationTree" type="AnimationTree" parent="." index="4"]
tree_root = SubResource("AnimationNodeStateMachine_vnar2")
anim_player = NodePath("../AnimationPlayer")
parameters/current_length = 1.06667
parameters/current_position = 0.68643
parameters/current_delta = 0.0166667
parameters/current_length = 0.0
parameters/current_position = 0.0
parameters/current_delta = 0.0
parameters/conditions/blocking = false
parameters/conditions/grounded = false
parameters/conditions/jumping = false
@ -31626,36 +31616,45 @@ parameters/1h_slice_diagonal/current_delta = 0.0269584
parameters/1h_slice_horizontal/current_length = 1.06667
parameters/1h_slice_horizontal/current_position = 1.06667
parameters/1h_slice_horizontal/current_delta = 0.0184626
parameters/Block_Attack/current_length = 1.06667
parameters/Block_Attack/current_position = 1.06667
parameters/Block_Attack/current_delta = 0.0
parameters/Block_Hit/current_length = 1.06667
parameters/Block_Hit/current_position = 1.06667
parameters/Block_Hit/current_delta = 0.0333301
parameters/Blocking/current_length = 1.0
parameters/Blocking/current_position = 1.0
parameters/Blocking/current_delta = 0.0
parameters/Block_Attack/current_length = null
parameters/Block_Attack/current_position = null
parameters/Block_Attack/current_delta = null
parameters/Block_Hit/current_length = null
parameters/Block_Hit/current_position = null
parameters/Block_Hit/current_delta = null
parameters/Blocking/current_length = null
parameters/Blocking/current_position = null
parameters/Blocking/current_delta = null
parameters/Death_A/current_length = 0.8
parameters/Death_A/current_position = 0.8
parameters/Death_A/current_delta = 0.0
parameters/Death_A/current_delta = 0.0333333
parameters/Death_B/current_length = 2.63333
parameters/Death_B/current_position = 2.63333
parameters/Death_B/current_delta = 0.0274359
parameters/End/current_length = 0.0
parameters/End/current_position = 0.0
parameters/End/current_delta = 0.0
parameters/Hit_A/current_length = 0.666667
parameters/Hit_A/current_position = 0.666667
parameters/Hit_A/current_delta = 0.033333
parameters/Hit_B/current_length = 0.866667
parameters/Hit_B/current_position = 0.866667
parameters/Hit_B/current_delta = 0.0294314
parameters/IWR/current_length = 1.06667
parameters/IWR/current_position = 0.68643
parameters/IWR/current_position = 0.499997
parameters/IWR/current_delta = 0.0166667
parameters/IWR/blend_position = Vector2(0.000524879, 0.00335574)
parameters/IWR/0/current_length = 1.06667
parameters/IWR/0/current_position = 0.68643
parameters/IWR/0/current_position = 0.499997
parameters/IWR/0/current_delta = 0.0166667
parameters/IWR/1/current_length = 0.8
parameters/IWR/1/current_position = 0.419799
parameters/IWR/1/current_position = 0.766667
parameters/IWR/1/current_delta = 0.0166667
parameters/IWR/2/current_length = 1.06667
parameters/IWR/2/current_position = 0.408754
parameters/IWR/2/current_delta = 0.0166667
parameters/IWR/3/current_length = 0.8
parameters/IWR/3/current_position = 0.419799
parameters/IWR/3/current_position = 0.766667
parameters/IWR/3/current_delta = 0.0166667
parameters/IWR/4/current_length = 0.8
parameters/IWR/4/current_position = 0.61058

@ -1,7 +1,7 @@
[gd_scene load_steps=33 format=3 uid="uid://670weiu5lj4u"]
[gd_scene load_steps=40 format=3 uid="uid://670weiu5lj4u"]
[ext_resource type="PackedScene" uid="uid://dkdvaoo1jowo2" path="res://resources/models/skeletons/Skeleton_Warrior_new.glb" id="1_1tv7o"]
[ext_resource type="Script" path="res://scripts/skeleton.gd" id="2_gn4pp"]
[ext_resource type="Script" path="res://scripts/enemy.gd" id="2_gn4pp"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_haxcf"]
height = 2.4
@ -9,6 +9,15 @@ height = 2.4
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_hx644"]
animation = &"Death_A"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_jrf36"]
animation = &"Death_B"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lpmvt"]
animation = &"Hit_A"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1hv0p"]
animation = &"Hit_B"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_v8ipv"]
animation = &"Idle"
@ -59,10 +68,6 @@ animation = &"Unarmed_Melee_Attack_Punch_B"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0pn5a"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_u1hnl"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4j7ud"]
advance_mode = 2
advance_condition = &"jumping"
@ -103,9 +108,29 @@ advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_hnd51"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ibwmu"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_fbopi"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0miw0"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_6qnll"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bfkmj"]
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7v7qh"]
states/Death_A/node = SubResource("AnimationNodeAnimation_hx644")
states/Death_A/position = Vector2(748, 100)
states/Death_B/node = SubResource("AnimationNodeAnimation_jrf36")
states/Death_B/position = Vector2(748, 143.814)
states/Hit_A/node = SubResource("AnimationNodeAnimation_lpmvt")
states/Hit_A/position = Vector2(188, 233.814)
states/Hit_B/node = SubResource("AnimationNodeAnimation_1hv0p")
states/Hit_B/position = Vector2(289, 233.814)
states/IWR/node = SubResource("AnimationNodeBlendSpace2D_vsgt8")
states/IWR/position = Vector2(531, 100)
states/Jump_Idle/node = SubResource("AnimationNodeAnimation_qnt8j")
@ -115,15 +140,15 @@ states/Jump_Land/position = Vector2(900, 283)
states/Jump_Start/node = SubResource("AnimationNodeAnimation_n2bl3")
states/Jump_Start/position = Vector2(658, 283)
states/Skeletons_Awaken_Floor_Long/node = SubResource("AnimationNodeAnimation_lp4nb")
states/Skeletons_Awaken_Floor_Long/position = Vector2(-20, -2.186)
states/Start/position = Vector2(284, 100)
states/Skeletons_Awaken_Floor_Long/position = Vector2(-4, -53.186)
states/Start/position = Vector2(300, 49)
states/Unarmed_Melee_Attack_Punch_A/node = SubResource("AnimationNodeAnimation_ou2cq")
states/Unarmed_Melee_Attack_Punch_A/position = Vector2(284, -2.186)
states/Unarmed_Melee_Attack_Punch_A/position = Vector2(300, -53.186)
"states/Unarmed_Melee_Attack_Punch_A 2/node" = SubResource("AnimationNodeAnimation_m8va5")
"states/Unarmed_Melee_Attack_Punch_A 2/position" = Vector2(583, -22.186)
states/Unarmed_Melee_Attack_Punch_B/node = SubResource("AnimationNodeAnimation_u8v08")
states/Unarmed_Melee_Attack_Punch_B/position = Vector2(831, -14.186)
transitions = ["IWR", "Death_A", SubResource("AnimationNodeStateMachineTransition_0pn5a"), "Death_A", "End", SubResource("AnimationNodeStateMachineTransition_u1hnl"), "IWR", "Jump_Start", SubResource("AnimationNodeStateMachineTransition_4j7ud"), "Jump_Start", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_mgjn7"), "Jump_Idle", "Jump_Land", SubResource("AnimationNodeStateMachineTransition_eh75m"), "Jump_Land", "IWR", SubResource("AnimationNodeStateMachineTransition_qllfg"), "IWR", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_vq1x0"), "Unarmed_Melee_Attack_Punch_A", "IWR", SubResource("AnimationNodeStateMachineTransition_yp0xf"), "IWR", "Unarmed_Melee_Attack_Punch_A", SubResource("AnimationNodeStateMachineTransition_ykhdv"), "IWR", "Unarmed_Melee_Attack_Punch_A 2", SubResource("AnimationNodeStateMachineTransition_bsx0c"), "Unarmed_Melee_Attack_Punch_A 2", "IWR", SubResource("AnimationNodeStateMachineTransition_hebuk"), "IWR", "Unarmed_Melee_Attack_Punch_B", SubResource("AnimationNodeStateMachineTransition_138r8"), "Unarmed_Melee_Attack_Punch_B", "IWR", SubResource("AnimationNodeStateMachineTransition_8a1wb"), "Start", "IWR", SubResource("AnimationNodeStateMachineTransition_hnd51")]
transitions = ["IWR", "Death_A", SubResource("AnimationNodeStateMachineTransition_0pn5a"), "IWR", "Jump_Start", SubResource("AnimationNodeStateMachineTransition_4j7ud"), "Jump_Start", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_mgjn7"), "Jump_Idle", "Jump_Land", SubResource("AnimationNodeStateMachineTransition_eh75m"), "Jump_Land", "IWR", SubResource("AnimationNodeStateMachineTransition_qllfg"), "IWR", "Jump_Idle", SubResource("AnimationNodeStateMachineTransition_vq1x0"), "Unarmed_Melee_Attack_Punch_A", "IWR", SubResource("AnimationNodeStateMachineTransition_yp0xf"), "IWR", "Unarmed_Melee_Attack_Punch_A", SubResource("AnimationNodeStateMachineTransition_ykhdv"), "IWR", "Unarmed_Melee_Attack_Punch_A 2", SubResource("AnimationNodeStateMachineTransition_bsx0c"), "Unarmed_Melee_Attack_Punch_A 2", "IWR", SubResource("AnimationNodeStateMachineTransition_hebuk"), "IWR", "Unarmed_Melee_Attack_Punch_B", SubResource("AnimationNodeStateMachineTransition_138r8"), "Unarmed_Melee_Attack_Punch_B", "IWR", SubResource("AnimationNodeStateMachineTransition_8a1wb"), "Start", "IWR", SubResource("AnimationNodeStateMachineTransition_hnd51"), "IWR", "Hit_A", SubResource("AnimationNodeStateMachineTransition_ibwmu"), "Hit_A", "IWR", SubResource("AnimationNodeStateMachineTransition_fbopi"), "IWR", "Hit_B", SubResource("AnimationNodeStateMachineTransition_0miw0"), "Hit_B", "IWR", SubResource("AnimationNodeStateMachineTransition_6qnll"), "IWR", "Death_B", SubResource("AnimationNodeStateMachineTransition_bfkmj")]
graph_offset = Vector2(-318, -97.186)
[node name="Skeleton_Warrior_new" instance=ExtResource("1_1tv7o")]
@ -134,164 +159,85 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.2, 0)
shape = SubResource("CapsuleShape3D_haxcf")
[node name="NavigationAgent3D" type="NavigationAgent3D" parent="." index="1"]
avoidance_enabled = true
debug_enabled = true
[node name="Skeleton3D" parent="Rig" index="0"]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0)
bones/0/position = Vector3(0, 0.0268161, -9.17874e-10)
bones/0/rotation = Quaternion(-8.64928e-09, -0.0189637, -8.6804e-10, 0.99982)
bones/1/position = Vector3(3.76573e-17, 0.431644, 1.22245e-15)
bones/1/rotation = Quaternion(0.0895664, 0.00435561, 0.00214404, 0.995969)
bones/1/scale = Vector3(1, 1, 1)
bones/2/position = Vector3(4.13228e-10, 0.191977, -1.93965e-10)
bones/2/rotation = Quaternion(0.101961, 0.0879574, -0.00869003, 0.990854)
bones/2/scale = Vector3(1, 1, 1)
bones/3/position = Vector3(-5.96e-10, 0.374988, 1.72942e-08)
bones/3/rotation = Quaternion(0.0383598, 0.00707321, 0.00429269, 0.99923)
bones/3/scale = Vector3(1, 1, 1)
bones/4/position = Vector3(0.208573, 0.123831, -0.0432211)
bones/4/rotation = Quaternion(-0.729087, -0.208909, -0.574581, 0.307645)
bones/4/scale = Vector3(0.999999, 0.999999, 1)
bones/5/position = Vector3(8.36021e-08, 0.241897, 4.95549e-08)
bones/5/rotation = Quaternion(2.53379e-07, 6.87794e-08, -0.52562, 0.85072)
bones/5/scale = Vector3(1, 1, 1)
bones/6/position = Vector3(1.27578e-08, 0.260044, -1.06596e-07)
bones/6/rotation = Quaternion(-2.40952e-07, 7.87097e-09, 0.0266581, 0.999645)
bones/0/rotation = Quaternion(-8.55713e-09, 1.20432e-07, -2.0611e-15, 1)
bones/1/rotation = Quaternion(-1.75564e-15, -1.03317e-07, 2.7788e-22, 1)
bones/4/rotation = Quaternion(-0.514124, -0.485465, -0.485465, 0.514124)
bones/5/rotation = Quaternion(2.45793e-07, -7.51439e-08, -0.0552965, 0.99847)
bones/6/rotation = Quaternion(-2.35585e-07, 4.61589e-09, 0.0266581, 0.999645)
bones/6/scale = Vector3(1, 1, 1)
bones/7/position = Vector3(9.41647e-09, 0.0738259, 5.26615e-09)
bones/7/rotation = Quaternion(-0.130261, -0.328571, -0.21097, 0.911353)
bones/7/scale = Vector3(1, 1, 1)
bones/8/position = Vector3(-6.99454e-08, 0.0961251, -0.0574999)
bones/8/rotation = Quaternion(-0.0498789, 0.0442018, -0.550103, 0.832433)
bones/8/scale = Vector3(1, 1, 1)
bones/9/position = Vector3(-0.192387, 0.115727, -0.0388489)
bones/9/rotation = Quaternion(-0.825771, 0.122911, 0.403942, 0.373933)
bones/9/scale = Vector3(0.999999, 0.999999, 1)
bones/10/position = Vector3(2.99751e-08, 0.241897, 1.51159e-07)
bones/10/rotation = Quaternion(2.02583e-07, -8.38538e-08, 0.492672, 0.870215)
bones/10/scale = Vector3(1, 1, 1)
bones/11/position = Vector3(-1.50742e-09, 0.260044, -1.38413e-08)
bones/11/rotation = Quaternion(-2.23298e-07, -1.79472e-09, -0.0266581, 0.999645)
bones/8/rotation = Quaternion(1.0645e-07, -5.81713e-08, -0.707107, 0.707107)
bones/10/rotation = Quaternion(2.4384e-07, 3.9741e-08, 0.0552965, 0.99847)
bones/11/rotation = Quaternion(-2.35588e-07, -4.60716e-09, -0.0266581, 0.999645)
bones/11/scale = Vector3(1, 1, 1)
bones/12/position = Vector3(1.98831e-09, 0.0738258, 2.6471e-08)
bones/12/rotation = Quaternion(-0.190017, 0.347986, 0.270238, 0.877366)
bones/12/scale = Vector3(1, 1, 1)
bones/13/position = Vector3(-9.65747e-08, 0.0961251, -0.0574999)
bones/13/rotation = Quaternion(-0.0484601, -0.0493025, 0.554957, 0.829002)
bones/13/scale = Vector3(1, 1, 1)
bones/14/position = Vector3(-5.08263e-09, 0.268797, 2.41198e-08)
bones/14/rotation = Quaternion(-0.116884, -0.0935184, 0.00192354, 0.988731)
bones/14/scale = Vector3(1, 1, 1)
bones/16/position = Vector3(0.170945, 0.113587, 0.086349)
bones/16/rotation = Quaternion(0.859133, 0.00183195, 0.0107754, 0.511635)
bones/16/scale = Vector3(1, 1, 1)
bones/17/position = Vector3(-3.16941e-08, 0.227078, 4.93766e-08)
bones/17/rotation = Quaternion(0.442935, 6.89002e-08, -3.0939e-07, 0.896554)
bones/17/scale = Vector3(1, 1, 1)
bones/18/position = Vector3(2.41183e-10, 0.149437, -1.5217e-08)
bones/18/rotation = Quaternion(-0.610246, -0.0219878, 0.00143039, 0.791905)
bones/18/scale = Vector3(1, 1, 0.999999)
bones/19/position = Vector3(4.62692e-09, 0.16565, 6.14659e-08)
bones/19/rotation = Quaternion(7.08625e-06, 0.920142, -0.391586, 5.39812e-08)
bones/19/scale = Vector3(1, 0.999996, 1)
bones/20/position = Vector3(-0.170945, 0.113587, -0.086349)
bones/20/rotation = Quaternion(0.998573, -0.00412647, 0.00332859, 0.0531359)
bones/20/scale = Vector3(1, 1, 1)
bones/21/position = Vector3(7.4073e-09, 0.227078, 7.82905e-09)
bones/21/rotation = Quaternion(0.635638, -5.88216e-08, 4.4603e-07, 0.771987)
bones/21/scale = Vector3(1, 0.999999, 1)
bones/22/position = Vector3(-1.5872e-08, 0.149437, -2.61142e-08)
bones/22/rotation = Quaternion(-0.262535, 0.0124291, -0.00282612, 0.964838)
bones/22/scale = Vector3(1, 0.999999, 1)
bones/23/position = Vector3(4.43416e-08, 0.16565, 1.37997e-08)
bones/23/rotation = Quaternion(-1.1677e-05, 0.920234, -0.391369, 2.80759e-06)
bones/23/scale = Vector3(1, 0.999999, 1)
bones/24/position = Vector3(0.170945, 0.325679, 0.609181)
bones/13/rotation = Quaternion(1.06567e-07, 5.80546e-08, 0.707107, 0.707107)
bones/16/rotation = Quaternion(0.999849, -6.67777e-08, -6.59708e-08, 0.0173739)
bones/17/rotation = Quaternion(0.106227, 7.68414e-08, -7.3606e-08, 0.994342)
bones/18/rotation = Quaternion(-0.45524, 7.50525e-08, -3.83738e-08, 0.890369)
bones/19/rotation = Quaternion(-1.02151e-08, 0.920355, -0.391084, 1.792e-07)
bones/20/rotation = Quaternion(0.999849, 6.73721e-08, 1.00173e-07, 0.0173739)
bones/21/rotation = Quaternion(0.106227, -7.67146e-08, 7.47885e-08, 0.994342)
bones/22/rotation = Quaternion(-0.45524, 7.50524e-08, -3.83739e-08, 0.890369)
bones/23/rotation = Quaternion(4.8837e-08, 0.920355, -0.391084, 4.023e-08)
bones/24/rotation = Quaternion(0.707107, -2.25334e-07, -5.00237e-08, 0.707107)
bones/24/scale = Vector3(1, 1, 1)
bones/25/position = Vector3(0.174084, 0.277175, 0.550873)
bones/25/rotation = Quaternion(-0.866778, -4.39406e-08, -9.40215e-08, 0.498694)
bones/25/scale = Vector3(1, 1, 1)
bones/26/position = Vector3(-1.07627e-10, 0.362833, -9.53107e-09)
bones/26/rotation = Quaternion(-8.20075e-08, 1.42778e-08, 0.999856, -0.0170039)
bones/26/scale = Vector3(1, 1, 1)
bones/27/position = Vector3(1.31869e-08, 0.213436, 7.9363e-09)
bones/27/rotation = Quaternion(-1.42936e-07, 0.391084, 0.920355, 1.6857e-08)
bones/27/scale = Vector3(1, 1, 1)
bones/28/position = Vector3(-4.18898e-10, 0.16565, 1.59057e-10)
bones/28/rotation = Quaternion(-0.391084, -3.15483e-08, -4.95245e-08, 0.920355)
bones/29/position = Vector3(1.72348e-08, 0.16565, 8.13901e-09)
bones/29/rotation = Quaternion(1, -8.82198e-10, 1.95111e-07, -1.17534e-07)
bones/29/scale = Vector3(1, 1, 1)
bones/30/position = Vector3(-1.28627e-08, -1.18505e-08, -9.28225e-09)
bones/30/rotation = Quaternion(6.01365e-08, -4.66007e-10, -1.77788e-08, 1)
bones/30/scale = Vector3(1, 1, 1)
bones/31/position = Vector3(-0.170945, 0.325679, 0.609181)
bones/31/rotation = Quaternion(0.707107, -3.427e-08, 1.4104e-07, 0.707107)
bones/27/rotation = Quaternion(-1.43895e-07, 0.391084, 0.920355, 1.70948e-08)
bones/28/rotation = Quaternion(-0.391084, -3.33945e-08, -4.91559e-08, 0.920355)
bones/31/scale = Vector3(1, 1, 1)
bones/32/position = Vector3(-0.170945, 0.113316, -0.36611)
bones/32/rotation = Quaternion(0.057842, -1.05196e-07, 7.99782e-09, 0.998326)
bones/32/scale = Vector3(1, 1, 1)
bones/33/position = Vector3(8.31366e-09, 0.362832, 7.27865e-08)
bones/33/rotation = Quaternion(-8.38206e-08, -3.79109e-10, 0.999948, 0.0102439)
bones/33/scale = Vector3(1, 1, 1)
bones/34/position = Vector3(1.87264e-08, 0.213436, 2.19942e-10)
bones/34/rotation = Quaternion(-1.43299e-07, 0.391084, 0.920355, 1.64677e-08)
bones/34/scale = Vector3(1, 1, 1)
bones/35/position = Vector3(4.33819e-09, 0.16565, 4.0278e-08)
bones/35/rotation = Quaternion(-0.391084, -3.29595e-08, -4.99165e-08, 0.920355)
bones/34/rotation = Quaternion(-1.43895e-07, 0.391084, 0.920355, 1.70948e-08)
bones/35/rotation = Quaternion(-0.391084, -3.33945e-08, -4.91559e-08, 0.920355)
bones/35/scale = Vector3(1, 1, 1)
bones/36/position = Vector3(1.60608e-08, 0.16565, 1.77417e-08)
bones/36/rotation = Quaternion(1, 3.75873e-11, 1.94655e-07, -7.60186e-08)
bones/36/scale = Vector3(1, 1, 1)
bones/37/position = Vector3(1.29572e-08, 7.95234e-10, 2.0117e-08)
bones/37/rotation = Quaternion(-8.35512e-10, 5.72004e-10, -1.74299e-08, 1)
bones/37/scale = Vector3(1, 1, 1)
bones/38/position = Vector3(0.44462, 0.926861, -0.682571)
bones/38/rotation = Quaternion(-0.707093, 0.00446999, 0.00446998, 0.707093)
bones/39/position = Vector3(0.514056, 0.811755, 0.113442)
bones/39/rotation = Quaternion(0.706594, 0.430956, 0.518739, 0.214269)
bones/39/scale = Vector3(1, 1, 1)
bones/40/position = Vector3(-0.476486, 0.919617, -0.652654)
bones/40/rotation = Quaternion(-0.707093, 0.00446999, 0.00446998, 0.707093)
bones/41/position = Vector3(-0.508355, 0.811755, 0.145544)
bones/41/rotation = Quaternion(-0.693631, 0.433948, 0.530357, -0.222006)
bones/41/scale = Vector3(1, 1, 1)
bones/38/rotation = Quaternion(-0.707107, -7.01241e-08, -7.01241e-08, 0.707107)
bones/40/rotation = Quaternion(-0.707107, -7.01241e-08, -7.01241e-08, 0.707107)
bones/41/rotation = Quaternion(-0.5, 0.5, 0.5, 0.5)
[node name="Skeleton_Warrior_Helmet" parent="Rig/Skeleton3D" index="0"]
transform = Transform3D(0.999678, 0.00296864, -0.025183, -0.00852679, 0.974646, -0.223591, 0.0238808, 0.223734, 0.974358, 0.0113544, 1.21124, 0.28735)
transform = Transform3D(1, -2.64883e-15, 3.42285e-08, -2.53587e-15, 1, 1.51473e-07, -3.42285e-08, -1.51473e-07, 1, -2.06898e-15, 1.21587, -1.57713e-07)
[node name="AnimationTree" type="AnimationTree" parent="." index="4"]
tree_root = SubResource("AnimationNodeStateMachine_7v7qh")
anim_player = NodePath("../AnimationPlayer")
parameters/current_length = 0.791667
parameters/current_position = 0.718039
parameters/current_delta = 0.1
parameters/current_length = 0.0
parameters/current_position = 0.0
parameters/current_delta = 0.0
parameters/conditions/grounded = false
parameters/conditions/jumping = false
parameters/Death_A/current_length = 0.791667
parameters/Death_A/current_position = 0.791667
parameters/Death_A/current_delta = 0.025
parameters/Death_A/current_delta = 0.0263263
parameters/Death_B/current_length = 2.625
parameters/Death_B/current_position = 2.625
parameters/Death_B/current_delta = 0.0
parameters/End/current_length = 0.0
parameters/End/current_position = 0.0
parameters/End/current_delta = 0.0
parameters/IWR/current_length = 0.791667
parameters/IWR/current_position = 0.718039
parameters/IWR/current_delta = 0.1
parameters/IWR/blend_position = Vector2(0.0362204, 0.863281)
parameters/Hit_A/current_length = 0.666667
parameters/Hit_A/current_position = 0.666667
parameters/Hit_A/current_delta = 0.0333333
parameters/Hit_B/current_length = 0.833333
parameters/Hit_B/current_position = 0.833333
parameters/Hit_B/current_delta = 0.0175824
parameters/IWR/current_length = 1.04167
parameters/IWR/current_position = 0.739946
parameters/IWR/current_delta = 0.0166667
parameters/IWR/blend_position = Vector2(0.000524879, -0.0137615)
parameters/IWR/0/current_length = 1.04167
parameters/IWR/0/current_position = 0.00970808
parameters/IWR/0/current_delta = 0.1
parameters/IWR/0/current_position = 0.739946
parameters/IWR/0/current_delta = 0.0166667
parameters/IWR/1/current_length = 0.791667
parameters/IWR/1/current_position = 0.718039
parameters/IWR/1/current_delta = 0.1
parameters/IWR/1/current_position = 0.708259
parameters/IWR/1/current_delta = 0.0166667
parameters/IWR/2/current_length = 1.04167
parameters/IWR/2/current_position = 1.04167
parameters/IWR/2/current_delta = 0.0
parameters/IWR/3/current_length = 0.791667
parameters/IWR/3/current_position = 0.718039
parameters/IWR/3/current_delta = 0.1
parameters/IWR/3/current_position = 0.448257
parameters/IWR/3/current_delta = 0.0166667
parameters/IWR/4/current_length = 0.791667
parameters/IWR/4/current_position = 0.390352
parameters/IWR/4/current_delta = 0.0166667
@ -321,3 +267,5 @@ parameters/Unarmed_Melee_Attack_Punch_B/current_position = 1.66667
parameters/Unarmed_Melee_Attack_Punch_B/current_delta = 0.01703
[connection signal="velocity_computed" from="NavigationAgent3D" to="." method="_on_velocity_computed"]
[connection signal="animation_finished" from="AnimationTree" to="." method="_on_animation_tree_animation_finished"]
[connection signal="animation_started" from="AnimationTree" to="." method="_on_animation_tree_animation_started"]

@ -0,0 +1,43 @@
extends Unit
class_name Enemy
@export var player : Player
@export var chasing_range := 30.0
@export var attack_range := 2.0
var attacks := ["Unarmed_Melee_Attack_Punch_A","Unarmed_Melee_Attack_Punch_A 2","Unarmed_Melee_Attack_Punch_B"]
@onready var nav_agent: NavigationAgent3D = $NavigationAgent3D
func _physics_process(delta: float) -> void:
if player.dead: return
var distance = global_position.distance_to(player.global_position)
#print(distance)
if distance <= attack_range:
anim_state.travel(attacks.pick_random())
elif distance <= chasing_range:
chase_player(player.position)
func chase_player(player_position: Vector3) -> void:
nav_agent.set_target_position(player_position)
if nav_agent.is_navigation_finished() or nav_agent.is_target_reached(): return
var next_path_position: Vector3 = nav_agent.get_next_path_position()
model.look_at(next_path_position)
var new_velocity: Vector3 = global_position.direction_to(next_path_position) * speed
_on_velocity_computed(new_velocity)
func _on_velocity_computed(safe_velocity: Vector3) -> void:
velocity = safe_velocity
var vy = velocity.y
velocity.y = 0
var vl = velocity * model.transform.basis
anim_tree.set("parameters/IWR/blend_position", Vector2(vl.x, -vl.z) / speed)
velocity.y = vy
move_and_slide()
func _on_animation_tree_animation_started(anim_name: StringName) -> void:
pass
func _on_animation_tree_animation_finished(anim_name: StringName) -> void:
if attacks.has(anim_name):
player.get_damage(damage)

@ -8,9 +8,9 @@ var timer_max := 1.0
func _ready() -> void:
print("Hallo Felix")
func _process(delta: float) -> void:
timer += delta
if timer > timer_max:
print("Add one gold for debugging...")
player.add_gold(1)
timer = 0
#func _process(delta: float) -> void:
#timer += delta
#if timer > timer_max:
#player.add_gold(1)
#timer = 0

@ -1,27 +1,23 @@
extends Unit
class_name Player
@export var speed := 5.0
@export var acceleration := 4.0
@export var jump_speed := 8.0
@export var mouse_sensitivity := 0.0015
@export var mouse_sensitivity := 0.006
@export var rotation_speed := 24.0
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
var jumping := false
var attacks := ["1h_slice_diagonal","1h_slice_horizontal","1h_attack_chop"]
var last_floor := true
var blocking := false
@onready var spring_arm := $SpringArm3D
@onready var model := $Rig
@onready var anim_tree := $AnimationTree
@onready var anim_state = $AnimationTree.get("parameters/playback")
#Player class
@export var gold := 0
signal gold_changed(current_gold)
func _ready() -> void:
died.connect(_on_died)
func _on_died() -> void:
print("Game Over!")
func add_gold(gold_amount: int) -> void:
gold += gold_amount
gold_changed.emit(gold)
@ -33,30 +29,33 @@ func _physics_process(delta: float) -> void:
if velocity.length() > 1.0:
model.rotation.y = lerp_angle(model.rotation.y, spring_arm.rotation.y, rotation_speed * delta)
func _unhandled_input(event: InputEvent) -> void:
func _input(event: InputEvent) -> void:
#move camera
if event is InputEventMouseMotion:
spring_arm.rotation.x -= event.relative.y * mouse_sensitivity
spring_arm.rotation_degrees.x = clamp(spring_arm.rotation_degrees.x, -90.0, 30.0)
spring_arm.rotation.y -= event.relative.x * mouse_sensitivity
#attack
if event.is_action_pressed("attack"):
if blocking:
anim_state.travel("Block_Attack")
else:
anim_state.travel(attacks.pick_random())
if enough_stamina_available(attack_cost):
use_stamina(attack_cost)
if blocking: anim_state.travel("Block_Attack")
else: anim_state.travel(attacks.pick_random())
#block
if Input.is_action_just_pressed("block"):
blocking = true
if Input.is_action_just_released("block"):
blocking = false
if Input.is_action_just_pressed("block"): blocking = true
if Input.is_action_just_released("block"): blocking = false
anim_tree.set("parameters/conditions/blocking", blocking)
anim_tree.set("parameters/conditions/not_blocking", !blocking)
#jump
if is_on_floor() and Input.is_action_just_pressed("jump"):
velocity.y = jump_speed
jumping = true
anim_tree.set("parameters/conditions/grounded", false)
if enough_stamina_available(jump_cost):
use_stamina(jump_cost)
velocity.y = jump_speed
jumping = true
anim_tree.set("parameters/conditions/grounded", false)
# We just hit the floor after being in the air
if is_on_floor() and not last_floor:
jumping = false
@ -73,8 +72,7 @@ func get_move_input(delta: float) -> void:
velocity.y = 0
var input = Input.get_vector("left", "right", "forward", "back")
var dir = Vector3(input.x, 0, input.y).rotated(Vector3.UP, spring_arm.rotation.y)
if blocking:
dir = Vector3.ZERO
if blocking: dir = Vector3.ZERO
velocity = lerp(velocity, dir * speed, acceleration * delta)
var vl = velocity * model.transform.basis
anim_tree.set("parameters/IWR/blend_position", Vector2(vl.x, -vl.z) / speed)

@ -1,44 +0,0 @@
extends CharacterBody3D
class_name Skeleton
@export var speed := 4.0
@export var acceleration := 4.0
@export var jump_speed := 8.0
@export var nearest_player : CharacterBody3D
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
var jumping := false
var attacks := ["Unarmed_Melee_Attack_Punch_A","Unarmed_Melee_Attack_Punch_A 2","Unarmed_Melee_Attack_Punch_B"]
var last_floor := true
var map_ready := false
@onready var model := $Rig
@onready var anim_tree := $AnimationTree
@onready var anim_state = $AnimationTree.get("parameters/playback")
@onready var nav_agent: NavigationAgent3D = $NavigationAgent3D
func _physics_process(delta: float) -> void:
set_movement_target(nearest_player.position)
if nav_agent.is_navigation_finished():
return
var next_path_position: Vector3 = nav_agent.get_next_path_position()
model.look_at(next_path_position)
var new_velocity: Vector3 = global_position.direction_to(next_path_position) * speed
if nav_agent.avoidance_enabled:
nav_agent.set_velocity(new_velocity)
else:
_on_velocity_computed(new_velocity)
func _on_velocity_computed(safe_velocity: Vector3):
velocity = safe_velocity
var vy = velocity.y
velocity.y = 0
var vl = velocity * model.transform.basis
anim_tree.set("parameters/IWR/blend_position", Vector2(vl.x, -vl.z) / speed)
velocity.y = vy
move_and_slide()
func set_movement_target(movement_target: Vector3):
nav_agent.set_target_position(movement_target)

@ -4,17 +4,52 @@ class_name Unit
@export var unit_name: String
@export var maximum_health := 100
@export var health := maximum_health
@export var maximum_stamina := 10
@export var stamina := maximum_stamina
@export var maximum_stamina := 100
@export var stamina := 0
@export var speed := 4.0
@export var acceleration := 4.0
@export var jump_speed := 8.0
@export var jump_cost := 20
@export var attack_cost := 30
@export var stamina_regeneration_rate := 2
@export var damage := 10
@onready var model := $Rig
@onready var anim_tree := $AnimationTree
@onready var anim_state = $AnimationTree.get("parameters/playback")
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
var jumping := false
var last_floor := true
var dead := false
var stamina_timer: float
var stamina_timer_max := 0.1
var hits := ["Hit_A", "Hit_B"]
var deaths := ["Death_A", "Death_B"]
signal health_changed(current_health, maximum_health)
signal stamina_changed(current_stamina, maximum_stamina)
signal died
func _ready() -> void:
health_changed.emit(health, maximum_health)
stamina_changed.emit(stamina, maximum_stamina)
func _process(delta: float) -> void:
stamina_timer += delta
if stamina_timer > stamina_timer_max:
stamina += stamina_regeneration_rate
clampi(stamina, 0, maximum_stamina)
stamina_changed.emit(stamina, maximum_stamina)
stamina_timer = 0
func get_damage(damage: int) -> void:
anim_state.travel(hits.pick_random())
health -= damage
clampi(health, 0, maximum_health)
health_changed.emit(health, maximum_health)
if health < 1:
if health <= 0:
die()
func enough_stamina_available(stamina_needed: int) -> bool:
@ -22,9 +57,11 @@ func enough_stamina_available(stamina_needed: int) -> bool:
func use_stamina(stamina_needed: int) -> void:
stamina -= stamina_needed
clampi(stamina, 0, maximum_stamina)
stamina_changed.emit(stamina, maximum_stamina)
func die() -> void:
print(unit_name + " died!")
dead = true
anim_state.travel(deaths.pick_random())
died.emit()
get_tree().queue_free()