feat: added stab button
parent
b3cff8240b
commit
656525f76d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,4 +1,4 @@
|
|||
[gd_resource type="AnimationNodeBlendTree" load_steps=44 format=3 uid="uid://c7rxfpfy7vt1b"]
|
||||
[gd_resource type="AnimationNodeBlendTree" load_steps=46 format=3 uid="uid://c7rxfpfy7vt1b"]
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ukhqm"]
|
||||
animation = &"Aim"
|
||||
|
@ -193,10 +193,12 @@ advance_mode = 2
|
|||
advance_expression = "!get_is_running()"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g5qf0"]
|
||||
xfade_time = 0.1
|
||||
advance_mode = 2
|
||||
advance_expression = "get_stab()"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_27kmb"]
|
||||
xfade_time = 0.2
|
||||
switch_mode = 2
|
||||
advance_mode = 2
|
||||
advance_expression = "get_is_running()
|
||||
|
@ -211,9 +213,20 @@ priority = 2
|
|||
switch_mode = 2
|
||||
advance_mode = 2
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_3bu8l"]
|
||||
xfade_time = 0.1
|
||||
advance_mode = 2
|
||||
advance_expression = "get_stab()"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_cpibo"]
|
||||
xfade_time = 0.1
|
||||
switch_mode = 2
|
||||
advance_mode = 2
|
||||
advance_expression = "is_walking && walk_speed > 0.0"
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
|
||||
"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
|
||||
"states/Aim Down [aim]/position" = Vector2(854.525, 226.767)
|
||||
"states/Aim Down [aim]/position" = Vector2(831.525, 251.767)
|
||||
"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
|
||||
"states/Aim [aim] [turn]/position" = Vector2(919.525, 94.3447)
|
||||
states/End/position = Vector2(195.182, 94.3447)
|
||||
|
@ -222,16 +235,16 @@ states/End/position = Vector2(195.182, 94.3447)
|
|||
"states/RESET To Aim/node" = SubResource("AnimationNodeAnimation_ugv1e")
|
||||
"states/RESET To Aim/position" = Vector2(755.258, 94.3447)
|
||||
states/Run/node = SubResource("AnimationNodeBlendTree_hmklb")
|
||||
states/Run/position = Vector2(485.687, 226.767)
|
||||
states/Run/position = Vector2(361.447, 258.767)
|
||||
states/Stab/node = SubResource("AnimationNodeAnimation_nur8b")
|
||||
states/Stab/position = Vector2(361.447, 94.3447)
|
||||
states/Start/position = Vector2(572.26, 14.954)
|
||||
"states/Stationary [turn]/node" = SubResource("AnimationNodeBlendTree_p0hk7")
|
||||
"states/Stationary [turn]/position" = Vector2(572.26, 94.3447)
|
||||
"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
|
||||
"states/Walk [turn]/position" = Vector2(666.26, 226.767)
|
||||
transitions = ["Aim [aim] [turn]", "Aim Down [aim]", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down [aim]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_5aafd"), "Aim [aim] [turn]", "Fire [aim]", SubResource("AnimationNodeStateMachineTransition_8f4gl"), "Fire [aim]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_xnat3"), "Walk [turn]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_12bos"), "Aim Down [aim]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_n0ndr"), "Walk [turn]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_0wc5e"), "Stationary [turn]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_4hisb"), "Start", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_bmty6"), "Stationary [turn]", "RESET To Aim", SubResource("AnimationNodeStateMachineTransition_kyd6p"), "RESET To Aim", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_w5kob"), "Stationary [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_g0i3x"), "Walk [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_ocffv"), "Run", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h0my5"), "Run", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_nymcr"), "Run", "Stab", SubResource("AnimationNodeStateMachineTransition_g5qf0"), "Stab", "Run", SubResource("AnimationNodeStateMachineTransition_27kmb"), "Stationary [turn]", "Stab", SubResource("AnimationNodeStateMachineTransition_4q0ot"), "Stab", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h6ujc")]
|
||||
graph_offset = Vector2(-462.578, -0.154999)
|
||||
"states/Walk [turn]/position" = Vector2(572.26, 258.767)
|
||||
transitions = ["Aim [aim] [turn]", "Aim Down [aim]", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down [aim]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_5aafd"), "Aim [aim] [turn]", "Fire [aim]", SubResource("AnimationNodeStateMachineTransition_8f4gl"), "Fire [aim]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_xnat3"), "Walk [turn]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_12bos"), "Aim Down [aim]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_n0ndr"), "Walk [turn]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_0wc5e"), "Stationary [turn]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_4hisb"), "Start", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_bmty6"), "Stationary [turn]", "RESET To Aim", SubResource("AnimationNodeStateMachineTransition_kyd6p"), "RESET To Aim", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_w5kob"), "Stationary [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_g0i3x"), "Walk [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_ocffv"), "Run", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h0my5"), "Run", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_nymcr"), "Run", "Stab", SubResource("AnimationNodeStateMachineTransition_g5qf0"), "Stab", "Run", SubResource("AnimationNodeStateMachineTransition_27kmb"), "Stationary [turn]", "Stab", SubResource("AnimationNodeStateMachineTransition_4q0ot"), "Stab", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h6ujc"), "Walk [turn]", "Stab", SubResource("AnimationNodeStateMachineTransition_3bu8l"), "Stab", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_cpibo")]
|
||||
graph_offset = Vector2(-160.578, -16.655)
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_au62i"]
|
||||
animation = &"Fall_die"
|
||||
|
@ -241,7 +254,7 @@ animation = &"Fall_die"
|
|||
[sub_resource type="AnimationNodeTimeSeek" id="AnimationNodeTimeSeek_p56ym"]
|
||||
|
||||
[resource]
|
||||
graph_offset = Vector2(-363, 102.5)
|
||||
graph_offset = Vector2(-237, 34.5)
|
||||
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
|
||||
nodes/Actions/position = Vector2(0, 140)
|
||||
nodes/Death/node = SubResource("AnimationNodeAnimation_au62i")
|
||||
|
|
BIN
godot/models/character.glb (Stored with Git LFS)
BIN
godot/models/character.glb (Stored with Git LFS)
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -47,7 +47,7 @@ bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
|
|||
bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
|
||||
bones/27/scale = Vector3(1, 1, 1)
|
||||
bones/28/rotation = Quaternion(0.155388, -0.432411, -0.521703, 0.71882)
|
||||
bones/29/rotation = Quaternion(-0.0486369, 0.0590467, -0.0759536, 0.994173)
|
||||
bones/29/rotation = Quaternion(-0.0486368, 0.0590466, -0.0759536, 0.994173)
|
||||
bones/30/rotation = Quaternion(-0.0305179, 0.0130499, 0.0216153, 0.999215)
|
||||
bones/30/scale = Vector3(1, 1, 1)
|
||||
bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408935, 0.855145)
|
||||
|
@ -59,21 +59,21 @@ bones/34/scale = Vector3(1, 1, 1)
|
|||
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100308, 0.880654)
|
||||
bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
|
||||
bones/36/scale = Vector3(1, 1, 1)
|
||||
bones/37/rotation = Quaternion(-0.0107008, 0.00769689, 0.00365465, 0.999906)
|
||||
bones/37/rotation = Quaternion(-0.0107009, 0.0076969, 0.00365465, 0.999906)
|
||||
bones/37/scale = Vector3(1, 1, 1)
|
||||
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906525)
|
||||
bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
|
||||
bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134584, 0.999855)
|
||||
bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134583, 0.999855)
|
||||
bones/40/scale = Vector3(1, 1, 1)
|
||||
bones/41/rotation = Quaternion(-0.0497163, 0.0839878, -0.166226, 0.981246)
|
||||
bones/42/rotation = Quaternion(-0.0310476, 0.0162325, 0.00151597, 0.999385)
|
||||
bones/43/rotation = Quaternion(-0.00109126, -0.0104143, 0.0283538, 0.999543)
|
||||
bones/42/rotation = Quaternion(-0.0310475, 0.0162325, 0.00151601, 0.999385)
|
||||
bones/43/rotation = Quaternion(-0.00109124, -0.0104143, 0.0283538, 0.999543)
|
||||
bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
|
||||
bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
|
||||
bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
|
||||
bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
|
||||
bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
|
||||
bones/48/rotation = Quaternion(0.706312, -2.22455e-08, 6.70979e-08, 0.707901)
|
||||
bones/48/rotation = Quaternion(0.706312, -2.55434e-08, 6.24918e-08, 0.707901)
|
||||
bones/48/scale = Vector3(1, 1, 1)
|
||||
bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
|
||||
bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
|
||||
|
@ -81,11 +81,13 @@ bones/49/scale = Vector3(1, 1, 1)
|
|||
bones/50/position = Vector3(-0.0246244, 0.246628, -0.0197923)
|
||||
bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
|
||||
bones/50/scale = Vector3(1, 1, 1)
|
||||
bones/51/position = Vector3(0.0902225, 0.042579, 0.00142519)
|
||||
bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.0152251)
|
||||
bones/51/scale = Vector3(1, 1, 1)
|
||||
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
|
||||
bones/52/scale = Vector3(1, 1, 1)
|
||||
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
|
||||
bones/54/position = Vector3(-0.0902225, 0.042579, 0.00142518)
|
||||
bones/54/rotation = Quaternion(0.997309, 0.00549227, -0.0715033, -0.0152251)
|
||||
bones/54/scale = Vector3(1, 1, 1)
|
||||
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
|
||||
|
@ -107,11 +109,18 @@ bone_name = "rifle"
|
|||
bone_idx = 44
|
||||
|
||||
[node name="HitscanMuzzle" type="HitscanMuzzle" parent="skeleton_character/Skeleton3D/BoneAttachment3D" index="0"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.37487e-08, 0.5644, 0.0479187)
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.84754e-09, 0.268834, 0.0479187)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 15, 0)
|
||||
collision_mask = 3
|
||||
|
||||
[node name="BayonetHitscan" type="HitscanMuzzle" parent="skeleton_character/Skeleton3D/BoneAttachment3D" index="1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.91257e-05, -0.0191353, -0.00675189)
|
||||
enabled = false
|
||||
target_position = Vector3(0, 1.685, 0)
|
||||
collision_mask = 3
|
||||
debug_shape_thickness = 3
|
||||
|
||||
[node name="AnimationPlayer" parent="." index="1"]
|
||||
root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
|
||||
|
||||
|
|
|
@ -43,26 +43,36 @@ bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
|
|||
bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
|
||||
bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
|
||||
bones/28/rotation = Quaternion(0.155388, -0.432411, -0.521703, 0.71882)
|
||||
bones/29/rotation = Quaternion(-0.0486368, 0.0590466, -0.0759536, 0.994173)
|
||||
bones/30/rotation = Quaternion(-0.0305179, 0.0130499, 0.0216153, 0.999215)
|
||||
bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408935, 0.855145)
|
||||
bones/32/rotation = Quaternion(-0.290993, 0.0788459, 0.0248015, 0.953148)
|
||||
bones/33/rotation = Quaternion(-0.419789, -0.067382, -0.039477, 0.904256)
|
||||
bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.000658852, 0.963714)
|
||||
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100308, 0.880654)
|
||||
bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
|
||||
bones/37/rotation = Quaternion(-0.0107009, 0.0076969, 0.00365465, 0.999906)
|
||||
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906525)
|
||||
bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
|
||||
bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134583, 0.999855)
|
||||
bones/41/rotation = Quaternion(-0.0497163, 0.0839878, -0.166226, 0.981246)
|
||||
bones/42/rotation = Quaternion(-0.0310475, 0.0162325, 0.00151601, 0.999385)
|
||||
bones/43/rotation = Quaternion(-0.00109124, -0.0104143, 0.0283538, 0.999543)
|
||||
bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
|
||||
bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
|
||||
bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
|
||||
bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
|
||||
bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
|
||||
bones/48/rotation = Quaternion(0.706312, -2.55434e-08, 6.24918e-08, 0.707901)
|
||||
bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
|
||||
bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
|
||||
bones/50/position = Vector3(-0.0246244, 0.246628, -0.0197923)
|
||||
bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
|
||||
bones/51/position = Vector3(0.0902225, 0.042579, 0.00142519)
|
||||
bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.0152251)
|
||||
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
|
||||
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
|
||||
bones/54/position = Vector3(-0.0902225, 0.042579, 0.00142518)
|
||||
bones/54/rotation = Quaternion(0.997309, 0.00549227, -0.0715033, -0.0152251)
|
||||
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
|
||||
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
|
||||
|
|
|
@ -47,26 +47,36 @@ bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
|
|||
bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
|
||||
bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
|
||||
bones/28/rotation = Quaternion(0.155388, -0.432411, -0.521703, 0.71882)
|
||||
bones/29/rotation = Quaternion(-0.0486368, 0.0590466, -0.0759536, 0.994173)
|
||||
bones/30/rotation = Quaternion(-0.0305179, 0.0130499, 0.0216153, 0.999215)
|
||||
bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408935, 0.855145)
|
||||
bones/32/rotation = Quaternion(-0.290993, 0.0788459, 0.0248015, 0.953148)
|
||||
bones/33/rotation = Quaternion(-0.419789, -0.067382, -0.039477, 0.904256)
|
||||
bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.000658852, 0.963714)
|
||||
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100308, 0.880654)
|
||||
bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
|
||||
bones/37/rotation = Quaternion(-0.0107009, 0.0076969, 0.00365465, 0.999906)
|
||||
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906525)
|
||||
bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
|
||||
bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134583, 0.999855)
|
||||
bones/41/rotation = Quaternion(-0.0497163, 0.0839878, -0.166226, 0.981246)
|
||||
bones/42/rotation = Quaternion(-0.0310475, 0.0162325, 0.00151601, 0.999385)
|
||||
bones/43/rotation = Quaternion(-0.00109124, -0.0104143, 0.0283538, 0.999543)
|
||||
bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
|
||||
bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
|
||||
bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
|
||||
bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
|
||||
bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
|
||||
bones/48/rotation = Quaternion(0.706312, -2.55434e-08, 6.24918e-08, 0.707901)
|
||||
bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
|
||||
bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
|
||||
bones/50/position = Vector3(-0.0246244, 0.246628, -0.0197923)
|
||||
bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
|
||||
bones/51/position = Vector3(0.0902225, 0.042579, 0.00142519)
|
||||
bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.0152251)
|
||||
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
|
||||
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
|
||||
bones/54/position = Vector3(-0.0902225, 0.042579, 0.00142518)
|
||||
bones/54/rotation = Quaternion(0.997309, 0.00549227, -0.0715033, -0.0152251)
|
||||
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
|
||||
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
|
||||
|
|
BIN
models/character.blend (Stored with Git LFS)
BIN
models/character.blend (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
|
@ -85,8 +85,10 @@ void Player::_on_dir_vertical(gd::Ref<gd::InputEvent>, float value) {
|
|||
}
|
||||
|
||||
void Player::_on_fire(gd::Ref<gd::InputEvent> event, float) {
|
||||
if(event->is_pressed())
|
||||
if(event->is_pressed()) {
|
||||
this->anim_tree->set_fire_weapon();
|
||||
this->anim_tree->set_stab();
|
||||
}
|
||||
}
|
||||
|
||||
void Player::_on_run(gd::Ref<gd::InputEvent> event, float) {
|
||||
|
|
|
@ -10,6 +10,7 @@ void PlayerAnimTree::_bind_methods() {
|
|||
GDFUNCTION(get_is_running);
|
||||
GDPROPERTY(aim_weapon, gd::Variant::BOOL);
|
||||
GDFUNCTION(get_fire_weapon);
|
||||
GDFUNCTION(get_stab);
|
||||
}
|
||||
|
||||
void PlayerAnimTree::_ready() {
|
||||
|
@ -22,6 +23,7 @@ void PlayerAnimTree::_process(double delta) {
|
|||
return;
|
||||
// update timers
|
||||
this->fire_weapon -= delta;
|
||||
this->stab -= delta;
|
||||
this->running_time -= delta;
|
||||
// increase death counter
|
||||
if(this->is_dead && this->death_blend < 1.f) {
|
||||
|
@ -29,16 +31,18 @@ void PlayerAnimTree::_process(double delta) {
|
|||
this->set("parameters/DeathBlend/blend_amount", this->death_blend);
|
||||
}
|
||||
// turn speed smoothing
|
||||
this->turn_speed = gd::Math::move_toward(this->turn_speed, this->target_turn_speed, float(delta * 30.));
|
||||
if(this->match_tags(Tags::Turn)) {
|
||||
this->turn_speed = gd::Math::move_toward(this->turn_speed, this->target_turn_speed, float(delta * 20.));
|
||||
this->commit_turn_speed();
|
||||
}
|
||||
// rotational root motion
|
||||
this->parent_3d->set_quaternion(this->get_root_motion_rotation_accumulator());
|
||||
this->parent_3d->rotate_y(M_PIf);
|
||||
this->commit_turn_speed();
|
||||
this->update_tags(this->fsm->get_current_node());
|
||||
}
|
||||
|
||||
void PlayerAnimTree::set_target_turn_speed(float value) {
|
||||
this->target_turn_speed = value;
|
||||
this->target_turn_speed = gd::Math::clamp(value, -1.f, 1.f);
|
||||
}
|
||||
|
||||
float PlayerAnimTree::get_target_turn_speed() const {
|
||||
|
@ -79,12 +83,22 @@ bool PlayerAnimTree::get_aim_weapon() const {
|
|||
}
|
||||
|
||||
void PlayerAnimTree::set_fire_weapon() {
|
||||
this->fire_weapon = this->FIRE_PARAM_DECAY;
|
||||
this->fire_weapon = this->BUTTON_PARAM_DECAY;
|
||||
}
|
||||
|
||||
bool PlayerAnimTree::get_fire_weapon() {
|
||||
bool const is_set = this->fire_weapon > 0.f;
|
||||
this->fire_weapon = 0.f;
|
||||
bool const is_set{this->fire_weapon > 0.0};
|
||||
this->fire_weapon = 0.0;
|
||||
return is_set;
|
||||
}
|
||||
|
||||
void PlayerAnimTree::set_stab() {
|
||||
this->stab = this->BUTTON_PARAM_DECAY;
|
||||
}
|
||||
|
||||
bool PlayerAnimTree::get_stab() {
|
||||
bool const is_set{this->fire_weapon > 0.0};
|
||||
this->stab = 0.0;
|
||||
return is_set;
|
||||
}
|
||||
|
||||
|
@ -103,13 +117,15 @@ void PlayerAnimTree::update_tags(gd::StringName const &anim) {
|
|||
this->current_tags = Tags::None;
|
||||
if(anim.contains("[turn]"))
|
||||
this->current_tags = Tags(this->current_tags | Tags::Turn);
|
||||
else
|
||||
this->turn_speed = 0.f;
|
||||
if(anim.contains("[aim]"))
|
||||
this->current_tags = Tags(this->current_tags | Tags::Aim);
|
||||
}
|
||||
}
|
||||
|
||||
void PlayerAnimTree::commit_turn_speed() {
|
||||
this->set("parameters/Actions/Stationary [turn]/Turn/blend_position", this->turn_speed);
|
||||
this->set("parameters/Actions/Stationary [turn]/Turn/blend_position", gd::Math::abs(this->turn_speed)*this->turn_speed);
|
||||
}
|
||||
|
||||
void PlayerAnimTree::commit_walk_speed() {
|
||||
|
|
|
@ -32,15 +32,17 @@ public:
|
|||
bool get_aim_weapon() const;
|
||||
void set_fire_weapon();
|
||||
bool get_fire_weapon();
|
||||
bool match_tags(Tags tags) const;
|
||||
void set_stab();
|
||||
bool get_stab();
|
||||
void death_animation();
|
||||
bool match_tags(Tags tags) const;
|
||||
private:
|
||||
void update_tags(gd::StringName const &anim);
|
||||
void commit_turn_speed();
|
||||
void commit_walk_speed();
|
||||
private:
|
||||
double const DEATH_BLEND_SPEED{1. / 0.3}; //!< multiplier for delta_time when blending from state machine to death animation.
|
||||
double const FIRE_PARAM_DECAY{0.5}; //!< how many seconds it takes for a fire input to become invalid.
|
||||
double const BUTTON_PARAM_DECAY{0.1}; //!< how many seconds it takes for a fire input to become invalid.
|
||||
double const RUN_PARAM_DECAY{0.25}; //!< how many seconds to run every time set_is_running is called.
|
||||
|
||||
gd::Node3D *parent_3d{nullptr}; //!< immediate parent as Node3D, rotational root motion is applied to this.
|
||||
|
@ -51,7 +53,8 @@ private:
|
|||
float walk_speed{0.f}; //!< blend amount between RESET/Rest animation and walk animation in walk state.
|
||||
double running_time{0.0}; //!< time in seconds to keep running for.
|
||||
bool aim_weapon{false}; //!< set to true to play the aim animation.
|
||||
double fire_weapon{0.0}; //!< play fire animation if this is > 0. Set to FIRE_PARAM_DECAY when set_fire_weapon is called. Decays by 'delta' every frame.
|
||||
double fire_weapon{0.0}; //!< play fire animation if this is > 0. Set to BUTTON_PARAM_DECAY when set_fire_weapon is called. Decays by 'delta' every frame.
|
||||
double stab{0.0}; //!< player stab animation if this is > 0. Set to BUTTON_PARAM_DECAY when set_stab is called. Decays by 'delta' every frame.
|
||||
float death_blend{0.f}; //!< current blend level of death animation. Quickly moved towards 1.0 when is_dead is set.
|
||||
bool is_dead{false}; //!< set to true to play death animation and tick up death_blend.
|
||||
Tags current_tags{Tags::None}; //!< tags (like [turn]) on the current action state.
|
||||
|
|
Loading…
Reference in New Issue