feat: updated rifle texture, turning animation
This commit is contained in:
parent
92f31aa85b
commit
efc8006c66
28 changed files with 7376 additions and 114 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
BIN
godot/models/animations/Aim.res
Normal file
BIN
godot/models/animations/Aim.res
Normal file
Binary file not shown.
BIN
godot/models/animations/Aim_Fire.res
Normal file
BIN
godot/models/animations/Aim_Fire.res
Normal file
Binary file not shown.
Binary file not shown.
BIN
godot/models/animations/Turn_left.res
Normal file
BIN
godot/models/animations/Turn_left.res
Normal file
Binary file not shown.
BIN
godot/models/animations/Turn_right.res
Normal file
BIN
godot/models/animations/Turn_right.res
Normal file
Binary file not shown.
Binary file not shown.
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:dac3325bf581718e44b20aa4cd96fca882350e730218ac70da6efe669b5abb77
|
oid sha256:02bb57a7618cdb5a9710f81dda9d106fa65b42388ddfc54c4737d8892d80e811
|
||||||
size 974656
|
size 1557812
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -2,15 +2,12 @@
|
||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://03bidmgkyu7x"
|
uid="uid://bpbh6yad5us1u"
|
||||||
path.s3tc="res://.godot/imported/character_grid.png-2d0e906f71f3e26d2c036075a68637c9.s3tc.ctex"
|
path.s3tc="res://.godot/imported/character_grid.png-2d0e906f71f3e26d2c036075a68637c9.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"imported_formats": ["s3tc_bptc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
generator_parameters={
|
|
||||||
"md5": "5251a685620ecec968e08d819a2a66a5"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:da6fd2aa2650150467a3ec08d9bd37d7545057fce020e453354ddd3f3d643675
|
|
||||||
size 30156
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:da6fd2aa2650150467a3ec08d9bd37d7545057fce020e453354ddd3f3d643675
|
|
||||||
size 30156
|
|
||||||
|
|
@ -1,38 +0,0 @@
|
||||||
[remap]
|
|
||||||
|
|
||||||
importer="texture"
|
|
||||||
type="CompressedTexture2D"
|
|
||||||
uid="uid://bfbggseqfivqg"
|
|
||||||
path.s3tc="res://.godot/imported/character_lee_enfield.jpg-6d1650ff6ac73c0058d6c5c97b6347e0.s3tc.ctex"
|
|
||||||
metadata={
|
|
||||||
"imported_formats": ["s3tc_bptc"],
|
|
||||||
"vram_texture": true
|
|
||||||
}
|
|
||||||
generator_parameters={
|
|
||||||
"md5": "2f63e7aacd33f2b1b77cb71dd6821df5"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
|
||||||
|
|
||||||
source_file="res://models/character_lee_enfield.jpg"
|
|
||||||
dest_files=["res://.godot/imported/character_lee_enfield.jpg-6d1650ff6ac73c0058d6c5c97b6347e0.s3tc.ctex"]
|
|
||||||
|
|
||||||
[params]
|
|
||||||
|
|
||||||
compress/mode=2
|
|
||||||
compress/high_quality=false
|
|
||||||
compress/lossy_quality=0.7
|
|
||||||
compress/hdr_compression=1
|
|
||||||
compress/normal_map=0
|
|
||||||
compress/channel_pack=0
|
|
||||||
mipmaps/generate=true
|
|
||||||
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=0
|
|
||||||
3
godot/models/character_rifle.png
Normal file
3
godot/models/character_rifle.png
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a28ab4d7a0be49abfb5de55ed47c05dfa2778649794b37755e8afd71407e5ef8
|
||||||
|
size 381127
|
||||||
|
|
@ -2,20 +2,17 @@
|
||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://bwq5navx6qi1l"
|
uid="uid://b2y2j72db80od"
|
||||||
path.s3tc="res://.godot/imported/character_lee-enfield.jpg-8aa5d8a65848beefe70a765079e8bd2c.s3tc.ctex"
|
path.s3tc="res://.godot/imported/character_rifle.png-59d3a7b80c91b62335b799778e2ab8de.s3tc.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"imported_formats": ["s3tc_bptc"],
|
"imported_formats": ["s3tc_bptc"],
|
||||||
"vram_texture": true
|
"vram_texture": true
|
||||||
}
|
}
|
||||||
generator_parameters={
|
|
||||||
"md5": "2f63e7aacd33f2b1b77cb71dd6821df5"
|
|
||||||
}
|
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://models/character_lee-enfield.jpg"
|
source_file="res://models/character_rifle.png"
|
||||||
dest_files=["res://.godot/imported/character_lee-enfield.jpg-8aa5d8a65848beefe70a765079e8bd2c.s3tc.ctex"]
|
dest_files=["res://.godot/imported/character_rifle.png-59d3a7b80c91b62335b799778e2ab8de.s3tc.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dibu06h02xpdh"]
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dibu06h02xpdh"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://bfbggseqfivqg" path="res://models/character_lee_enfield.jpg" id="1_8jtmf"]
|
[ext_resource type="Texture2D" uid="uid://b2y2j72db80od" path="res://models/character_rifle.png" id="1_iex1v"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
resource_name = "Material"
|
resource_name = "Material"
|
||||||
cull_mode = 2
|
cull_mode = 2
|
||||||
specular_mode = 1
|
specular_mode = 1
|
||||||
albedo_texture = ExtResource("1_8jtmf")
|
albedo_texture = ExtResource("1_iex1v")
|
||||||
metallic = 0.293814
|
metallic = 0.293814
|
||||||
roughness = 0.64433
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c2ic02ndhqkod"]
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c2ic02ndhqkod"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://03bidmgkyu7x" path="res://models/character_grid.png" id="1_54a4n"]
|
[ext_resource type="Texture2D" uid="uid://bpbh6yad5us1u" path="res://models/character_grid.png" id="1_54a4n"]
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
resource_name = "Primary"
|
resource_name = "Primary"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=23 format=3 uid="uid://1kr3qqan3trk"]
|
[gd_scene load_steps=28 format=3 uid="uid://1kr3qqan3trk"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_mi4co"]
|
[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_mi4co"]
|
||||||
|
|
||||||
|
|
@ -6,9 +6,9 @@
|
||||||
animation = &"Aim"
|
animation = &"Aim"
|
||||||
play_mode = 1
|
play_mode = 1
|
||||||
use_custom_timeline = true
|
use_custom_timeline = true
|
||||||
timeline_length = 0.6
|
timeline_length = 0.4
|
||||||
stretch_time_scale = false
|
stretch_time_scale = false
|
||||||
start_offset = 0.4
|
start_offset = 0.0
|
||||||
loop_mode = 0
|
loop_mode = 0
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
|
||||||
|
|
@ -53,8 +53,7 @@ advance_expression = "get_input_directions().y <= 0.5"
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_c81tj"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_c81tj"]
|
||||||
advance_mode = 2
|
advance_mode = 2
|
||||||
advance_expression = "get_input_directions().y < -0.5
|
advance_expression = "get_input_directions().y < -0.9"
|
||||||
"
|
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_r26s5"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_r26s5"]
|
||||||
advance_mode = 2
|
advance_mode = 2
|
||||||
|
|
@ -62,7 +61,7 @@ advance_mode = 2
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
|
||||||
switch_mode = 2
|
switch_mode = 2
|
||||||
advance_mode = 2
|
advance_mode = 2
|
||||||
advance_expression = "get_input_directions().y >= -0.5"
|
advance_expression = "get_input_directions().y >= -0.9"
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4im1q"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4im1q"]
|
||||||
priority = 2
|
priority = 2
|
||||||
|
|
@ -78,6 +77,7 @@ advance_expression = "get_input_direction() > 0.f"
|
||||||
priority = 2
|
priority = 2
|
||||||
switch_mode = 2
|
switch_mode = 2
|
||||||
advance_mode = 2
|
advance_mode = 2
|
||||||
|
advance_expression = "get_input_fire()"
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
|
||||||
reset = false
|
reset = false
|
||||||
|
|
@ -89,25 +89,51 @@ advance_mode = 2
|
||||||
advance_expression = "get_input_directions().y < -0.5"
|
advance_expression = "get_input_directions().y < -0.5"
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
|
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
|
||||||
"states/Aim Down/node" = SubResource("AnimationNodeAnimation_ukhqm")
|
"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
|
||||||
"states/Aim Down/position" = Vector2(486, 196)
|
"states/Aim Down [aim]/position" = Vector2(537, 197.5)
|
||||||
"states/Aim Up/node" = SubResource("AnimationNodeAnimation_nhlru")
|
"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
|
||||||
"states/Aim Up/position" = Vector2(486, 98.5)
|
"states/Aim [aim] [turn]/position" = Vector2(537, 98)
|
||||||
states/Aim_Fire/node = SubResource("AnimationNodeAnimation_8rbkq")
|
states/End/position = Vector2(204, 197.5)
|
||||||
states/Aim_Fire/position = Vector2(647.5, 98)
|
"states/Fire [aim]/node" = SubResource("AnimationNodeAnimation_8rbkq")
|
||||||
states/Idle/node = SubResource("AnimationNodeAnimation_dqnnp")
|
"states/Fire [aim]/position" = Vector2(752.5, 98)
|
||||||
states/Idle/position = Vector2(338, 100)
|
"states/Idle [turn_animated]/node" = SubResource("AnimationNodeAnimation_dqnnp")
|
||||||
|
"states/Idle [turn_animated]/position" = Vector2(338, 100)
|
||||||
states/Start/position = Vector2(204, 100)
|
states/Start/position = Vector2(204, 100)
|
||||||
states/Walk/node = SubResource("AnimationNodeBlendTree_2mbyh")
|
"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
|
||||||
states/Walk/position = Vector2(338, 197.5)
|
"states/Walk [turn]/position" = Vector2(338, 197.5)
|
||||||
transitions = ["Idle", "Walk", SubResource("AnimationNodeStateMachineTransition_3mk5o"), "Walk", "Idle", SubResource("AnimationNodeStateMachineTransition_mf4y3"), "Idle", "Aim Up", SubResource("AnimationNodeStateMachineTransition_c81tj"), "Start", "Idle", SubResource("AnimationNodeStateMachineTransition_r26s5"), "Aim Up", "Aim Down", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down", "Idle", SubResource("AnimationNodeStateMachineTransition_4im1q"), "Aim Down", "Walk", SubResource("AnimationNodeStateMachineTransition_5aafd"), "Aim Up", "Aim_Fire", SubResource("AnimationNodeStateMachineTransition_8f4gl"), "Aim_Fire", "Aim Up", SubResource("AnimationNodeStateMachineTransition_xnat3"), "Walk", "Aim Up", SubResource("AnimationNodeStateMachineTransition_12bos")]
|
transitions = ["Idle [turn_animated]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_3mk5o"), "Walk [turn]", "Idle [turn_animated]", SubResource("AnimationNodeStateMachineTransition_mf4y3"), "Idle [turn_animated]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_c81tj"), "Start", "Idle [turn_animated]", SubResource("AnimationNodeStateMachineTransition_r26s5"), "Aim [aim] [turn]", "Aim Down [aim]", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down [aim]", "Idle [turn_animated]", SubResource("AnimationNodeStateMachineTransition_4im1q"), "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")]
|
||||||
graph_offset = Vector2(-290.049, -113.5)
|
graph_offset = Vector2(-351.759, -7)
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_cwpxw"]
|
||||||
|
filter_enabled = true
|
||||||
|
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:PoleTarget.Foot.L", "Character/Skeleton3D:PoleTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:spine.001", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R"]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ltmcj"]
|
||||||
|
animation = &"Turn_left"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_1g6a2"]
|
||||||
|
animation = &"Turn_right"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dgkx8"]
|
||||||
|
animation = &"RESET"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_ajqf0"]
|
||||||
|
blend_point_0/node = SubResource("AnimationNodeAnimation_ltmcj")
|
||||||
|
blend_point_0/pos = 1.0
|
||||||
|
blend_point_1/node = SubResource("AnimationNodeAnimation_1g6a2")
|
||||||
|
blend_point_1/pos = -1.0
|
||||||
|
blend_point_2/node = SubResource("AnimationNodeAnimation_dgkx8")
|
||||||
|
blend_point_2/pos = 0.0
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hiswf"]
|
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hiswf"]
|
||||||
graph_offset = Vector2(-510.4, 51.9)
|
graph_offset = Vector2(-203, -3.5)
|
||||||
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
|
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
|
||||||
nodes/Actions/position = Vector2(20, 140)
|
nodes/Actions/position = Vector2(-80, 140)
|
||||||
node_connections = [&"output", 0, &"Actions"]
|
nodes/TurnAnimation/node = SubResource("AnimationNodeBlend2_cwpxw")
|
||||||
|
nodes/TurnAnimation/position = Vector2(120, 140)
|
||||||
|
nodes/TurnDirection/node = SubResource("AnimationNodeBlendSpace1D_ajqf0")
|
||||||
|
nodes/TurnDirection/position = Vector2(-80, 300)
|
||||||
|
node_connections = [&"TurnAnimation", 0, &"Actions", &"TurnAnimation", 1, &"TurnDirection", &"output", 0, &"TurnAnimation"]
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ewsvd"]
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ewsvd"]
|
||||||
radius = 0.370388
|
radius = 0.370388
|
||||||
|
|
@ -126,7 +152,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0337329, 0)
|
||||||
[node name="Skeleton3D" parent="CharacterModel/Character" index="0"]
|
[node name="Skeleton3D" parent="CharacterModel/Character" index="0"]
|
||||||
bones/0/rotation = Quaternion(1.12928e-22, 1, 2.98023e-08, -1.94707e-07)
|
bones/0/rotation = Quaternion(1.12928e-22, 1, 2.98023e-08, -1.94707e-07)
|
||||||
bones/1/position = Vector3(3.28472e-17, 0.826102, -2.26306e-09)
|
bones/1/position = Vector3(3.28472e-17, 0.826102, -2.26306e-09)
|
||||||
bones/1/rotation = Quaternion(-0.0189873, -6.3066e-09, -1.08731e-09, 0.99982)
|
bones/1/rotation = Quaternion(-0.0189874, -6.30661e-09, -1.08732e-09, 0.99982)
|
||||||
bones/2/rotation = Quaternion(0.0262842, 8.66579e-09, 1.56723e-09, 0.999655)
|
bones/2/rotation = Quaternion(0.0262842, 8.66579e-09, 1.56723e-09, 0.999655)
|
||||||
bones/3/rotation = Quaternion(-0.013812, -0.124595, 8.42949e-05, 0.992112)
|
bones/3/rotation = Quaternion(-0.013812, -0.124595, 8.42949e-05, 0.992112)
|
||||||
bones/4/rotation = Quaternion(0.0100466, -3.89644e-10, 6.78268e-10, 0.99995)
|
bones/4/rotation = Quaternion(0.0100466, -3.89644e-10, 6.78268e-10, 0.99995)
|
||||||
|
|
@ -203,16 +229,18 @@ bones/51/scale = Vector3(1, 1, 1)
|
||||||
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
|
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
|
||||||
bones/52/scale = Vector3(1, 1, 1)
|
bones/52/scale = Vector3(1, 1, 1)
|
||||||
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
|
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
|
||||||
bones/54/rotation = Quaternion(0.997309, 0.00549227, -0.0715033, -0.015225)
|
bones/54/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
|
||||||
bones/54/scale = Vector3(1, 1, 1)
|
bones/54/scale = Vector3(1, 1, 1)
|
||||||
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
|
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
|
||||||
bones/55/scale = Vector3(1, 1, 1)
|
bones/55/scale = Vector3(1, 1, 1)
|
||||||
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
|
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
|
||||||
bones/56/scale = Vector3(1, 1, 1)
|
bones/56/scale = Vector3(1, 1, 1)
|
||||||
bones/57/rotation = Quaternion(-0.707107, 8.33981e-07, 8.33981e-07, 0.707107)
|
bones/57/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
|
||||||
bones/58/rotation = Quaternion(-0.707107, -8.33981e-07, -8.33981e-07, 0.707107)
|
bones/58/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
|
||||||
bones/59/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
|
bones/59/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
|
||||||
bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
|
bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
|
||||||
|
bones/61/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
|
||||||
|
bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
|
||||||
|
|
||||||
[node name="AnimationTree" type="AnimationTree" parent="CharacterModel"]
|
[node name="AnimationTree" type="AnimationTree" parent="CharacterModel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
@ -221,16 +249,21 @@ root_motion_track = NodePath("Character/Skeleton3D:root")
|
||||||
tree_root = SubResource("AnimationNodeBlendTree_hiswf")
|
tree_root = SubResource("AnimationNodeBlendTree_hiswf")
|
||||||
advance_expression_base_node = NodePath("../..")
|
advance_expression_base_node = NodePath("../..")
|
||||||
anim_player = NodePath("../AnimationPlayer")
|
anim_player = NodePath("../AnimationPlayer")
|
||||||
parameters/Actions/Walk/Forward/blend_amount = 1.0
|
"parameters/Actions/Walk [turn]/Forward/blend_amount" = 1.0
|
||||||
|
parameters/TurnAnimation/blend_amount = 0
|
||||||
[node name="Camera" type="Camera3D" parent="."]
|
parameters/TurnDirection/blend_position = -1.0
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(-1, -6.25962e-09, -8.71984e-08, -1.4325e-08, 0.995684, 0.0928047, 8.62412e-08, 0.0928047, -0.995684, -0.383042, 1.71014, -0.773267)
|
|
||||||
fov = 57.0005
|
|
||||||
far = 100.0
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
[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, 1, 0)
|
||||||
shape = SubResource("CapsuleShape3D_ewsvd")
|
shape = SubResource("CapsuleShape3D_ewsvd")
|
||||||
|
|
||||||
|
[node name="CameraParent" type="Node3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
top_level = true
|
||||||
|
|
||||||
|
[node name="Camera" type="Camera3D" parent="CameraParent"]
|
||||||
|
transform = Transform3D(-0.99874, 0.00857726, -0.0494361, -1.83936e-08, 0.98528, 0.170948, 0.0501747, 0.170733, -0.984039, -0.510957, 1.68471, -1.00759)
|
||||||
|
fov = 42.5804
|
||||||
|
far = 100.0
|
||||||
|
|
||||||
[editable path="CharacterModel"]
|
[editable path="CharacterModel"]
|
||||||
|
|
|
||||||
|
|
@ -41,13 +41,13 @@ dir_backward={
|
||||||
dir_left={
|
dir_left={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
dir_right={
|
dir_right={
|
||||||
"deadzone": 0.2,
|
"deadzone": 0.2,
|
||||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||||
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
|
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
look_left={
|
look_left={
|
||||||
|
|
@ -70,6 +70,12 @@ look_down={
|
||||||
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
fire={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":3,"pressure":0.0,"pressed":true,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
version https://git-lfs.github.com/spec/v1
|
version https://git-lfs.github.com/spec/v1
|
||||||
oid sha256:5ee6afa4a1a910d294d7de19ab4e26b4050d947297ada70b1f238439443855d5
|
oid sha256:3cbe2b511344382a9e2fdd63f3b066b54e181bfdf7c38543263bcfa227b12055
|
||||||
size 2332244
|
size 2501008
|
||||||
|
|
|
||||||
Binary file not shown.
3
models/textures/rifle.kra
Normal file
3
models/textures/rifle.kra
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b0e11236244f62d387e703ee30887d3ba9076fd9b6b80f76d6a18086e1116a36
|
||||||
|
size 2256428
|
||||||
BIN
models/textures/rifle.kra~
Normal file
BIN
models/textures/rifle.kra~
Normal file
Binary file not shown.
3
models/textures/rifle.png
Normal file
3
models/textures/rifle.png
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:a28ab4d7a0be49abfb5de55ed47c05dfa2778649794b37755e8afd71407e5ef8
|
||||||
|
size 381127
|
||||||
BIN
models/textures/rifle.png~
Normal file
BIN
models/textures/rifle.png~
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 806 KiB |
|
|
@ -6,24 +6,30 @@
|
||||||
void Player::_bind_methods() {
|
void Player::_bind_methods() {
|
||||||
#define CLASSNAME Player
|
#define CLASSNAME Player
|
||||||
GDFUNCTION(get_input_directions);
|
GDFUNCTION(get_input_directions);
|
||||||
|
GDFUNCTION(get_input_fire);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_ready() {
|
void Player::_ready() {
|
||||||
if(gd::Engine::get_singleton()->is_editor_hint())
|
if(gd::Engine::get_singleton()->is_editor_hint())
|
||||||
return;
|
return;
|
||||||
this->anim_tree = this->get_node<gd::AnimationTree>("%AnimationTree");
|
this->anim_tree = this->get_node<gd::AnimationTree>("%AnimationTree");
|
||||||
this->sfm = gd::Object::cast_to<gd::AnimationNodeStateMachinePlayback>(this->anim_tree->get("parameters/Actions/playback"));
|
this->fsm = gd::Object::cast_to<gd::AnimationNodeStateMachinePlayback>(this->anim_tree->get("parameters/Actions/playback"));
|
||||||
this->input = this->get_node<utils::PlayerInput>("%PlayerInput");
|
this->input = this->get_node<utils::PlayerInput>("%PlayerInput");
|
||||||
this->input->listen_to(utils::PlayerInput::Listener("dir_left", "dir_right", callable_mp(this, &Player::_on_dir_horizontal)));
|
this->input->listen_to(utils::PlayerInput::Listener("dir_left", "dir_right", callable_mp(this, &Player::_on_dir_horizontal)));
|
||||||
this->input->listen_to(utils::PlayerInput::Listener("dir_backward", "dir_forward", callable_mp(this, &Player::_on_dir_vertical)));
|
this->input->listen_to(utils::PlayerInput::Listener("dir_backward", "dir_forward", callable_mp(this, &Player::_on_dir_vertical)));
|
||||||
|
this->input->listen_to(utils::PlayerInput::Listener("fire", callable_mp(this, &Player::_on_fire)));
|
||||||
this->model_node = this->get_node<gd::Node3D>("%CharacterModel");
|
this->model_node = this->get_node<gd::Node3D>("%CharacterModel");
|
||||||
|
this->camera_parent = this->get_node<gd::Node3D>("%CameraParent");
|
||||||
|
this->camera_parent->set_global_rotation(this->get_global_rotation());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_process(double delta) {
|
void Player::_process(double delta) {
|
||||||
if(gd::Engine::get_singleton()->is_editor_hint())
|
if(gd::Engine::get_singleton()->is_editor_hint())
|
||||||
return;
|
return;
|
||||||
this->anim_tree->set("parameters/Actions/Walk/Forward/blend_amount", gd::Math::clamp(this->input_directions.y, 0.5f, 1.f));
|
if(this->input_fire >= 0.0)
|
||||||
this->rotate_y(-this->input_directions.x * delta);
|
this->input_fire -= delta;
|
||||||
|
this->process_rotate(delta);
|
||||||
|
this->process_transform_camera(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::_physics_process(double delta [[maybe_unused]]) {
|
void Player::_physics_process(double delta [[maybe_unused]]) {
|
||||||
|
|
@ -41,6 +47,29 @@ void Player::_physics_process(double delta [[maybe_unused]]) {
|
||||||
this->move_and_slide();
|
this->move_and_slide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::process_transform_camera(double delta) {
|
||||||
|
this->camera_parent->set_global_position(this->get_global_position());
|
||||||
|
float const camera_speed{float(delta) * (this->fsm->get_current_node().contains("[aim]") ? this->AIMING_CAMERA_ROTATION_SPEED : this->CAMERA_ROTATION_SPEED)};
|
||||||
|
this->camera_parent->rotate_y(this->input_directions.x * -camera_speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Player::process_rotate(double delta) {
|
||||||
|
if(this->fsm->get_current_node().contains("[turn]") || this->fsm->get_current_node().contains("[turn_animated]")) {
|
||||||
|
//! the signed angle difference between the left axes of the camera parent and Player
|
||||||
|
float const diff = -this->camera_parent->get_global_basis().get_column(0).signed_angle_to(this->get_global_basis().get_column(0), {0.f, 1.f, 0.f});
|
||||||
|
//! the maximum rotation to allow for this frame
|
||||||
|
float const speed{float(delta) * this->ROTATION_SPEED};
|
||||||
|
float const actual_speed{speed < gd::Math::abs(diff) ? gd::Math::sign(diff) * speed : diff};
|
||||||
|
// rotate by max allowed or full difference, whichever has the smaller magnitude
|
||||||
|
this->rotate_y(actual_speed);
|
||||||
|
this->anim_tree->set("parameters/TurnDirection/blend_position", diff / (this->ROTATION_SPEED * .5f));
|
||||||
|
this->anim_tree->set("parameters/TurnAnimation/blend_amount", this->fsm->get_current_node().contains("[turn_animated]") ? 1.f : 0.f);
|
||||||
|
} else {
|
||||||
|
this->anim_tree->set("parameters/TurnAnimation/blend_amount", 0.f);
|
||||||
|
this->anim_tree->set("parameters/TurnDirection/blend_position", 0.f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Player::_on_dir_horizontal(gd::Ref<gd::InputEvent>, float value) {
|
void Player::_on_dir_horizontal(gd::Ref<gd::InputEvent>, float value) {
|
||||||
this->input_directions.x = value;
|
this->input_directions.x = value;
|
||||||
}
|
}
|
||||||
|
|
@ -49,6 +78,18 @@ void Player::_on_dir_vertical(gd::Ref<gd::InputEvent>, float value) {
|
||||||
this->input_directions.y = value;
|
this->input_directions.y = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Player::_on_fire(gd::Ref<gd::InputEvent>, float value) {
|
||||||
|
if(value > 0.f) {
|
||||||
|
this->input_fire = 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gd::Vector2 Player::get_input_directions() const {
|
gd::Vector2 Player::get_input_directions() const {
|
||||||
return this->input_directions;
|
return this->input_directions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Player::get_input_fire() {
|
||||||
|
bool const val = this->input_fire > 0.0;
|
||||||
|
this->input_fire = 0.0;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,16 +15,27 @@ public:
|
||||||
virtual void _process(double delta) override;
|
virtual void _process(double delta) override;
|
||||||
virtual void _physics_process(double delta) override;
|
virtual void _physics_process(double delta) override;
|
||||||
|
|
||||||
|
void process_transform_camera(double delta);
|
||||||
|
void process_rotate(double delta);
|
||||||
|
|
||||||
void _on_dir_horizontal(gd::Ref<gd::InputEvent>, float value);
|
void _on_dir_horizontal(gd::Ref<gd::InputEvent>, float value);
|
||||||
void _on_dir_vertical(gd::Ref<gd::InputEvent>, float value);
|
void _on_dir_vertical(gd::Ref<gd::InputEvent>, float value);
|
||||||
|
void _on_fire(gd::Ref<gd::InputEvent>, float value);
|
||||||
|
|
||||||
gd::Vector2 get_input_directions() const;
|
gd::Vector2 get_input_directions() const;
|
||||||
|
bool get_input_fire();
|
||||||
private:
|
private:
|
||||||
gd::AnimationTree *anim_tree{nullptr};
|
gd::AnimationTree *anim_tree{nullptr};
|
||||||
gd::AnimationNodeStateMachinePlayback *sfm{nullptr};
|
gd::AnimationNodeStateMachinePlayback *fsm{nullptr};
|
||||||
|
gd::Node3D *camera_parent{nullptr};
|
||||||
utils::PlayerInput *input{nullptr};
|
utils::PlayerInput *input{nullptr};
|
||||||
gd::Node3D *model_node{nullptr};
|
gd::Node3D *model_node{nullptr};
|
||||||
gd::Vector2 input_directions{};
|
gd::Vector2 input_directions{0.f, 0.f};
|
||||||
|
double input_fire{0.0};
|
||||||
|
|
||||||
|
float const ROTATION_SPEED{1.5f};
|
||||||
|
float const CAMERA_ROTATION_SPEED{2.f};
|
||||||
|
float const AIMING_CAMERA_ROTATION_SPEED{1.f};
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // !TR_PLAYER_HPP
|
#endif // !TR_PLAYER_HPP
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue