feat: implemented combat basics

main
Sara 2024-12-06 17:12:06 +01:00
parent fdea9b3fdc
commit c322abdaa4
56 changed files with 2809 additions and 518 deletions

22
godot/.gdb_history Normal file
View File

@ -0,0 +1,22 @@
set args -e
r
set args
r
r
r
r
r
r
set args -e
r
set args
r
r
set args
set args -e
r
set args
r
set args -e
r
q

View File

@ -1,11 +1,18 @@
[gd_scene load_steps=3 format=3 uid="uid://c2kiuk2yxdlfr"]
[gd_scene load_steps=4 format=3 uid="uid://c2kiuk2yxdlfr"]
[ext_resource type="PackedScene" uid="uid://1kr3qqan3trk" path="res://objects/player.tscn" id="1_7kr4i"]
[ext_resource type="PackedScene" uid="uid://dm3355tbkvx24" path="res://objects/section_2.tscn" id="2_og5hb"]
[ext_resource type="PackedScene" uid="uid://0fykl1mw3c12" path="res://objects/enemy.tscn" id="3_ppe0x"]
[node name="Boot" type="Node3D"]
[node name="Player" parent="." instance=ExtResource("1_7kr4i")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.156536, 2.63439, 1.64616)
[node name="Environment" parent="." instance=ExtResource("2_og5hb")]
[node name="Enemy" parent="." instance=ExtResource("3_ppe0x")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.321304, 0.548716, -10.4406)
[node name="Enemy2" parent="." instance=ExtResource("3_ppe0x")]
transform = Transform3D(0.47095, 0, -0.88216, 0, 1, 0, 0.88216, 0, 0.47095, 8.63104, 0.487608, -15.5861)
[node name="Player" parent="." instance=ExtResource("1_7kr4i")]
transform = Transform3D(0.0816776, 0, 0.996659, 0, 1, 0, -0.996659, 0, 0.0816776, -2.58966, 1.45175, -2.77265)

Binary file not shown.

View File

@ -23,4 +23,4 @@ compress/channel_pack=1
mipmaps/generate=false
mipmaps/limit=-1
slices/horizontal=1
slices/vertical=24
slices/vertical=28

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,215 @@
[gd_resource type="AnimationNodeBlendTree" load_steps=39 format=3 uid="uid://c7rxfpfy7vt1b"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ukhqm"]
animation = &"Aim"
play_mode = 1
use_custom_timeline = true
timeline_length = 0.4
stretch_time_scale = false
start_offset = 0.0
loop_mode = 0
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
animation = &"Aim"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8rbkq"]
animation = &"Aim_Fire"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ugv1e"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds004"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_axx41"]
animation = &"Run_forward"
use_custom_timeline = true
timeline_length = 0.633
stretch_time_scale = true
start_offset = 0.0
loop_mode = 1
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_aunq0"]
filter_enabled = true
filters = ["skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:Neck", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:spine.002", "skeleton_character/Skeleton3D:spine.003", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hmklb"]
graph_offset = Vector2(-813.273, 105.409)
nodes/Rest/node = SubResource("AnimationNodeAnimation_ds004")
nodes/Rest/position = Vector2(-160, 160)
nodes/Run/node = SubResource("AnimationNodeAnimation_axx41")
nodes/Run/position = Vector2(-160, 380)
nodes/Speed/node = SubResource("AnimationNodeBlend2_aunq0")
nodes/Speed/position = Vector2(80, 140)
nodes/output/position = Vector2(320, 140)
node_connections = [&"Speed", 0, &"Rest", &"Speed", 1, &"Run", &"output", 0, &"Speed"]
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_4hmb8"]
filter_enabled = true
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:Neck", "Character/Skeleton3D:PoleTarget.Foot.L", "Character/Skeleton3D:PoleTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:spine.003", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5n7ai"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_pwhry"]
animation = &"Turn_right"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_rasdy"]
animation = &"Turn_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_xgea8"]
animation = &"RESET"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_kxn5j"]
blend_point_0/node = SubResource("AnimationNodeAnimation_pwhry")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeAnimation_rasdy")
blend_point_1/pos = 1.0
blend_point_2/node = SubResource("AnimationNodeAnimation_xgea8")
blend_point_2/pos = 0.0
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_p0hk7"]
graph_offset = Vector2(-480.5, 90)
nodes/BoneMask/node = SubResource("AnimationNodeBlend2_4hmb8")
nodes/BoneMask/position = Vector2(140, 140)
nodes/Rest/node = SubResource("AnimationNodeAnimation_5n7ai")
nodes/Rest/position = Vector2(-100, 160)
nodes/Turn/node = SubResource("AnimationNodeBlendSpace1D_kxn5j")
nodes/Turn/position = Vector2(-100, 380)
nodes/output/position = Vector2(380, 140)
node_connections = [&"BoneMask", 0, &"Rest", &"BoneMask", 1, &"Turn", &"output", 0, &"BoneMask"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7ceai"]
animation = &"RESET"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_rb1jd"]
filter_enabled = true
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R", "skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_psu0r"]
animation = &"Walk_forward"
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2mbyh"]
graph_offset = Vector2(-724.58, 74.5681)
nodes/Base/node = SubResource("AnimationNodeAnimation_7ceai")
nodes/Base/position = Vector2(-120, 120)
nodes/Speed/node = SubResource("AnimationNodeBlend2_rb1jd")
nodes/Speed/position = Vector2(100, 120)
nodes/Walk/node = SubResource("AnimationNodeAnimation_psu0r")
nodes/Walk/position = Vector2(-140, 300)
node_connections = [&"Speed", 0, &"Base", &"Speed", 1, &"Walk", &"output", 0, &"Speed"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
switch_mode = 2
advance_mode = 2
advance_expression = "!aim_weapon"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5aafd"]
xfade_time = 0.3
switch_mode = 2
advance_mode = 2
advance_expression = "get_input_direction() > 0.f"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8f4gl"]
priority = 2
switch_mode = 2
advance_mode = 2
advance_expression = "get_fire_weapon()"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
reset = false
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_12bos"]
advance_mode = 2
advance_expression = "get_input_directions().y < -0.5"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n0ndr"]
priority = 2
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0wc5e"]
xfade_time = 0.2
priority = 2
advance_mode = 2
advance_expression = "!is_walking || walk_speed <= 0.0"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4hisb"]
xfade_time = 0.2
advance_mode = 2
advance_expression = "is_walking && walk_speed > 0.0"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmty6"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kyd6p"]
xfade_time = 0.05
advance_mode = 2
advance_expression = "aim_weapon"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w5kob"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g0i3x"]
xfade_time = 0.4
advance_mode = 2
advance_expression = "get_is_running()
"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ocffv"]
xfade_time = 0.3
advance_mode = 2
advance_expression = "get_is_running()
"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h0my5"]
xfade_time = 0.4
advance_mode = 2
advance_expression = "!get_is_running()"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nymcr"]
xfade_time = 0.3
advance_mode = 2
advance_expression = "!get_is_running()"
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
"states/Aim Down [aim]/position" = Vector2(666.26, 226.767)
"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
"states/Aim [aim] [turn]/position" = Vector2(731.26, 94.3447)
states/End/position = Vector2(195.182, 94.3447)
"states/Fire [aim]/node" = SubResource("AnimationNodeAnimation_8rbkq")
"states/Fire [aim]/position" = Vector2(731.26, 14.954)
"states/RESET To Aim/node" = SubResource("AnimationNodeAnimation_ugv1e")
"states/RESET To Aim/position" = Vector2(566.993, 94.3447)
states/Run/node = SubResource("AnimationNodeBlendTree_hmklb")
states/Run/position = Vector2(297.422, 226.767)
states/Start/position = Vector2(383.995, 14.954)
"states/Stationary [turn]/node" = SubResource("AnimationNodeBlendTree_p0hk7")
"states/Stationary [turn]/position" = Vector2(383.995, 94.3447)
"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
"states/Walk [turn]/position" = Vector2(477.995, 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")]
graph_offset = Vector2(162.422, 4.345)
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_au62i"]
animation = &"Fall_die"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_av3pm"]
[sub_resource type="AnimationNodeTimeSeek" id="AnimationNodeTimeSeek_p56ym"]
[resource]
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
nodes/Actions/position = Vector2(0, 140)
nodes/Death/node = SubResource("AnimationNodeAnimation_au62i")
nodes/Death/position = Vector2(-200, 300)
nodes/DeathBlend/node = SubResource("AnimationNodeBlend2_av3pm")
nodes/DeathBlend/position = Vector2(180, 140)
nodes/DeathSeek/node = SubResource("AnimationNodeTimeSeek_p56ym")
nodes/DeathSeek/position = Vector2(20, 300)
nodes/output/position = Vector2(327.273, 163.636)
node_connections = [&"DeathBlend", 0, &"Actions", &"DeathBlend", 1, &"DeathSeek", &"DeathSeek", 0, &"Death", &"output", 0, &"DeathBlend"]

BIN
godot/models/character.glb (Stored with Git LFS)

Binary file not shown.

File diff suppressed because it is too large Load Diff

BIN
godot/models/character_muzzleflash.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,38 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cr6iscmse3pja"
path.s3tc="res://.godot/imported/character_muzzleflash.png-982b5cc9aafb2911f8e3e2752c795058.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
generator_parameters={
"md5": "d02c4037a6c9c0bec62182aef0071f85"
}
[deps]
source_file="res://models/character_muzzleflash.png"
dest_files=["res://.godot/imported/character_muzzleflash.png-982b5cc9aafb2911f8e3e2752c795058.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

View File

@ -0,0 +1,16 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://38dxpo5acw13"]
[ext_resource type="Texture2D" uid="uid://cr6iscmse3pja" path="res://models/character_muzzleflash.png" id="1_2oiaa"]
[resource]
resource_name = "Gunshot"
transparency = 3
alpha_hash_scale = 1.0
alpha_antialiasing_mode = 1
alpha_antialiasing_edge = 0.3
cull_mode = 2
shading_mode = 0
diffuse_mode = 3
specular_mode = 1
albedo_texture = ExtResource("1_2oiaa")
texture_repeat = false

BIN
godot/models/props/trenchfloor.glb (Stored with Git LFS)

Binary file not shown.

BIN
godot/models/props/trenchwall_2m.glb (Stored with Git LFS)

Binary file not shown.

BIN
godot/models/props/walkover.glb (Stored with Git LFS)

Binary file not shown.

View File

@ -0,0 +1,126 @@
[gd_scene load_steps=3 format=3 uid="uid://bnr6lab7heo8e"]
[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_vq0u3"]
[ext_resource type="AnimationNodeBlendTree" uid="uid://c7rxfpfy7vt1b" path="res://models/animations/character_tree.tres" id="2_wdyfc"]
[node name="CharacterModel" instance=ExtResource("1_vq0u3")]
[node name="Skeleton3D" parent="skeleton_character" index="0"]
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/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/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/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
bones/10/scale = Vector3(1, 1, 1)
bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
bones/11/scale = Vector3(1, 1, 1)
bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
bones/12/scale = Vector3(1, 1, 1)
bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
bones/13/scale = Vector3(1, 1, 1)
bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
bones/15/scale = Vector3(1, 1, 1)
bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
bones/16/scale = Vector3(1, 1, 1)
bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
bones/19/scale = Vector3(1, 1, 1)
bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
bones/21/scale = Vector3(1, 1, 1)
bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
bones/22/scale = Vector3(1, 1, 1)
bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
bones/25/scale = Vector3(1, 1, 1)
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.155387, -0.432411, -0.521703, 0.71882)
bones/29/rotation = Quaternion(-0.0486369, 0.0590467, -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.00408933, 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/33/scale = Vector3(1, 1, 1)
bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.00065886, 0.963714)
bones/34/scale = Vector3(1, 1, 1)
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 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/scale = Vector3(1, 1, 1)
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
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/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/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/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)
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/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
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/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
bones/54/scale = Vector3(1, 1, 1)
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
bones/55/scale = Vector3(1, 1, 1)
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
bones/56/scale = Vector3(1, 1, 1)
bones/57/scale = Vector3(0, 0, 0)
bones/58/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
bones/59/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
bones/61/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
bones/63/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
[node name="BoneAttachment3D" type="BoneAttachment3D" parent="skeleton_character/Skeleton3D" index="3"]
transform = Transform3D(-0.937186, 0.347435, 0.0311762, 0.0973187, 0.17459, 0.97982, 0.33498, 0.921308, -0.197435, -0.16719, 1.02003, 0.0528419)
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)
enabled = false
target_position = Vector3(0, 15, 0)
collision_mask = 3
[node name="AnimationPlayer" parent="." index="1"]
root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
[node name="AnimationTree" type="PlayerAnimTree" parent="." index="2"]
root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
tree_root = ExtResource("2_wdyfc")
anim_player = NodePath("../AnimationPlayer")
parameters/Actions/Run/Speed/blend_amount = 0
"parameters/Actions/Stationary [turn]/BoneMask/blend_amount" = 0
"parameters/Actions/Stationary [turn]/Turn/blend_position" = 0
"parameters/Actions/Walk [turn]/Speed/blend_amount" = 0
parameters/DeathBlend/blend_amount = 0
parameters/DeathSeek/seek_request = -1.0

80
godot/objects/enemy.tscn Normal file
View File

@ -0,0 +1,80 @@
[gd_scene load_steps=3 format=3 uid="uid://0fykl1mw3c12"]
[ext_resource type="PackedScene" uid="uid://bnr6lab7heo8e" path="res://objects/character_model_base.tscn" id="1_i7aop"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3tduq"]
radius = 0.370388
[node name="Enemy" type="Enemy"]
collision_layer = 3
collision_mask = 3
[node name="CharacterModel" parent="." instance=ExtResource("1_i7aop")]
unique_name_in_owner = true
[node name="Skeleton3D" parent="CharacterModel/skeleton_character" index="0"]
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/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/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/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
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.155387, -0.432411, -0.521703, 0.71882)
bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408933, 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.00065886, 0.963714)
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 0.880654)
bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
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/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/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
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/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
bones/58/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
bones/59/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
bones/61/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
bones/63/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_3tduq")
[editable path="CharacterModel"]

View File

@ -1,202 +1,6 @@
[gd_scene load_steps=40 format=3 uid="uid://1kr3qqan3trk"]
[gd_scene load_steps=4 format=3 uid="uid://1kr3qqan3trk"]
[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_mi4co"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ukhqm"]
animation = &"Aim"
play_mode = 1
use_custom_timeline = true
timeline_length = 0.4
stretch_time_scale = false
start_offset = 0.0
loop_mode = 0
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
animation = &"Aim"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8rbkq"]
animation = &"Aim_Fire"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ugv1e"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds004"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_axx41"]
animation = &"Run_forward"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_aunq0"]
filter_enabled = true
filters = ["skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:Neck", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:spine.002", "skeleton_character/Skeleton3D:spine.003", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hmklb"]
graph_offset = Vector2(-813.273, 105.409)
nodes/Rest/node = SubResource("AnimationNodeAnimation_ds004")
nodes/Rest/position = Vector2(-160, 160)
nodes/Run/node = SubResource("AnimationNodeAnimation_axx41")
nodes/Run/position = Vector2(-160, 380)
nodes/Speed/node = SubResource("AnimationNodeBlend2_aunq0")
nodes/Speed/position = Vector2(80, 140)
nodes/output/position = Vector2(320, 140)
node_connections = [&"Speed", 0, &"Rest", &"Speed", 1, &"Run", &"output", 0, &"Speed"]
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_4hmb8"]
filter_enabled = true
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:Neck", "Character/Skeleton3D:PoleTarget.Foot.L", "Character/Skeleton3D:PoleTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:spine.003", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5n7ai"]
animation = &"RESET"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_cmc4t"]
animation = &"Turn_right"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_wfckx"]
animation = &"Turn_left"
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6neek"]
animation = &"RESET"
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_kxn5j"]
blend_point_0/node = SubResource("AnimationNodeAnimation_cmc4t")
blend_point_0/pos = -1.0
blend_point_1/node = SubResource("AnimationNodeAnimation_wfckx")
blend_point_1/pos = 1.0
blend_point_2/node = SubResource("AnimationNodeAnimation_6neek")
blend_point_2/pos = 0.0
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_p0hk7"]
graph_offset = Vector2(-480.5, 90)
nodes/BoneMask/node = SubResource("AnimationNodeBlend2_4hmb8")
nodes/BoneMask/position = Vector2(140, 140)
nodes/Rest/node = SubResource("AnimationNodeAnimation_5n7ai")
nodes/Rest/position = Vector2(-100, 160)
nodes/Turn/node = SubResource("AnimationNodeBlendSpace1D_kxn5j")
nodes/Turn/position = Vector2(-100, 380)
nodes/output/position = Vector2(380, 140)
node_connections = [&"BoneMask", 0, &"Rest", &"BoneMask", 1, &"Turn", &"output", 0, &"BoneMask"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7ceai"]
animation = &"RESET"
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_rb1jd"]
filter_enabled = true
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R", "skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_psu0r"]
animation = &"Walk_forward"
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2mbyh"]
graph_offset = Vector2(-724.58, 74.5681)
nodes/Base/node = SubResource("AnimationNodeAnimation_7ceai")
nodes/Base/position = Vector2(-120, 120)
nodes/Speed/node = SubResource("AnimationNodeBlend2_rb1jd")
nodes/Speed/position = Vector2(100, 120)
nodes/Walk/node = SubResource("AnimationNodeAnimation_psu0r")
nodes/Walk/position = Vector2(-140, 300)
node_connections = [&"Speed", 0, &"Base", &"Speed", 1, &"Walk", &"output", 0, &"Speed"]
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
switch_mode = 2
advance_mode = 2
advance_expression = "!aim_weapon"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5aafd"]
xfade_time = 0.3
switch_mode = 2
advance_mode = 2
advance_expression = "get_input_direction() > 0.f"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8f4gl"]
priority = 2
switch_mode = 2
advance_mode = 2
advance_expression = "get_fire_weapon()"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
reset = false
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_12bos"]
advance_mode = 2
advance_expression = "get_input_directions().y < -0.5"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n0ndr"]
priority = 2
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0wc5e"]
xfade_time = 0.2
priority = 2
advance_mode = 2
advance_expression = "!is_walking || walk_speed <= 0.0"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4hisb"]
xfade_time = 0.2
advance_mode = 2
advance_expression = "is_walking && walk_speed > 0.0"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmty6"]
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kyd6p"]
xfade_time = 0.05
advance_mode = 2
advance_expression = "aim_weapon"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w5kob"]
switch_mode = 2
advance_mode = 2
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g0i3x"]
xfade_time = 0.4
advance_mode = 2
advance_expression = "get_is_running()
"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ocffv"]
xfade_time = 0.3
advance_mode = 2
advance_expression = "get_is_running()
"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h0my5"]
xfade_time = 0.4
advance_mode = 2
advance_expression = "!get_is_running()"
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nymcr"]
xfade_time = 0.3
advance_mode = 2
advance_expression = "!get_is_running()"
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
"states/Aim Down [aim]/position" = Vector2(666.26, 226.767)
"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
"states/Aim [aim] [turn]/position" = Vector2(731.26, 94.3447)
states/End/position = Vector2(195.182, 94.3447)
"states/Fire [aim]/node" = SubResource("AnimationNodeAnimation_8rbkq")
"states/Fire [aim]/position" = Vector2(731.26, 14.954)
"states/RESET To Aim/node" = SubResource("AnimationNodeAnimation_ugv1e")
"states/RESET To Aim/position" = Vector2(566.993, 94.3447)
states/Run/node = SubResource("AnimationNodeBlendTree_hmklb")
states/Run/position = Vector2(297.422, 226.767)
states/Start/position = Vector2(383.995, 14.954)
"states/Stationary [turn]/node" = SubResource("AnimationNodeBlendTree_p0hk7")
"states/Stationary [turn]/position" = Vector2(383.995, 94.3447)
"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
"states/Walk [turn]/position" = Vector2(477.995, 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")]
graph_offset = Vector2(-139.078, -60.155)
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hiswf"]
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
nodes/Actions/position = Vector2(80, 140)
nodes/output/position = Vector2(327.273, 163.636)
node_connections = [&"output", 0, &"Actions"]
[ext_resource type="PackedScene" uid="uid://bnr6lab7heo8e" path="res://objects/character_model_base.tscn" id="1_cwt7u"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ewsvd"]
radius = 0.370388
@ -205,121 +9,22 @@ radius = 0.370388
radius = 0.1
[node name="Player" type="Player"]
slide_on_ceiling = false
floor_constant_speed = true
safe_margin = 0.005
collision_layer = 3
collision_mask = 3
floor_snap_length = 0.2
[node name="CharacterModel" parent="." instance=ExtResource("1_cwt7u")]
unique_name_in_owner = true
[node name="BoneAttachment3D" parent="CharacterModel/skeleton_character/Skeleton3D" index="3"]
transform = Transform3D(-0.937186, 0.347435, 0.0311762, 0.0973187, 0.17459, 0.97982, 0.33498, 0.921308, -0.197435, -0.16719, 1.02003, 0.0528419)
[node name="HitscanMuzzle" parent="CharacterModel/skeleton_character/Skeleton3D/BoneAttachment3D" index="0"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.00234e-08, 0.0436091, 0.0479187)
[node name="PlayerInput" type="PlayerInput" parent="."]
unique_name_in_owner = true
[node name="CharacterModel" parent="." instance=ExtResource("1_mi4co")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0232956, 0)
[node name="Skeleton3D" parent="CharacterModel/skeleton_character" index="0"]
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/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/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/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
bones/10/scale = Vector3(1, 1, 1)
bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
bones/11/scale = Vector3(1, 1, 1)
bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
bones/12/scale = Vector3(1, 1, 1)
bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
bones/13/scale = Vector3(1, 1, 1)
bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
bones/15/scale = Vector3(1, 1, 1)
bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
bones/16/scale = Vector3(1, 1, 1)
bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
bones/19/scale = Vector3(1, 1, 1)
bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
bones/21/scale = Vector3(1, 1, 1)
bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
bones/22/scale = Vector3(1, 1, 1)
bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
bones/25/scale = Vector3(1, 1, 1)
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.155387, -0.432411, -0.521703, 0.71882)
bones/29/rotation = Quaternion(-0.0486369, 0.0590467, -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.00408933, 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/33/scale = Vector3(1, 1, 1)
bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.00065886, 0.963714)
bones/34/scale = Vector3(1, 1, 1)
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 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/scale = Vector3(1, 1, 1)
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
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/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/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/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)
bones/49/scale = Vector3(1, 1, 1)
bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
bones/50/scale = Vector3(1, 1, 1)
bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
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/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
bones/54/scale = Vector3(1, 1, 1)
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
bones/55/scale = Vector3(1, 1, 1)
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
bones/56/scale = Vector3(1, 1, 1)
bones/57/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
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/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="PlayerAnimTree" parent="CharacterModel"]
unique_name_in_owner = true
root_node = NodePath("%AnimationTree/..")
root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
tree_root = SubResource("AnimationNodeBlendTree_hiswf")
anim_player = NodePath("../AnimationPlayer")
parameters/Actions/Run/Speed/blend_amount = 1.0
"parameters/Actions/Stationary [turn]/BoneMask/blend_amount" = 1.0
"parameters/Actions/Stationary [turn]/Turn/blend_position" = 0.0
"parameters/Actions/Walk [turn]/Speed/blend_amount" = 1.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_ewsvd")
@ -335,7 +40,7 @@ shape = SubResource("SphereShape3D_v7ajo")
spring_length = 1.3
[node name="Camera" type="Camera3D" parent="CameraParent/CameraSpring"]
transform = Transform3D(0.984053, 0.00860135, -0.177669, 0.0105107, 0.994273, 0.10635, 0.177567, -0.106522, 0.978327, -8.00937e-08, -3.57628e-07, 1.3)
transform = Transform3D(0.960689, 0.0368572, -0.27517, 0.00642303, 0.987932, 0.154751, 0.277554, -0.150435, 0.948859, -1.09896e-07, -8.34465e-07, 1.3)
fov = 41.9276
far = 100.0

View File

@ -5,7 +5,6 @@
[ext_resource type="PackedScene" uid="uid://bmminombn1t0k" path="res://models/props/dirt_ramp.glb" id="3_2vit1"]
[ext_resource type="LightmapGIData" uid="uid://6pvqgw5obful" path="res://lighting/section_2.lmbake" id="3_h3v2c"]
[ext_resource type="PackedScene" uid="uid://b5inibbfdco0d" path="res://models/props/trenchwall_2m.glb" id="4_hbo2r"]
[ext_resource type="PackedScene" uid="uid://c71yj2qpupn33" path="res://models/props/dirtpile_large.glb" id="6_wsb7q"]
[ext_resource type="PackedScene" uid="uid://cesooq708ot6t" path="res://models/props/dirtpile_wall.glb" id="7_63acg"]
[ext_resource type="PackedScene" uid="uid://brdhoy3efmba" path="res://models/props/trenchfloor.glb" id="8_14rhs"]
[ext_resource type="PackedScene" uid="uid://cv5ikndnvmwlo" path="res://models/props/dirtpile_wall_large.glb" id="9_y6ebv"]
@ -16,6 +15,11 @@
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_ikuna"]
[sub_resource type="NavigationMesh" id="NavigationMesh_e0njj"]
vertices = PackedVector3Array(9.3629, 0.326698, -19.5397, 8.8629, 0.326698, -19.6397, 8.6629, 0.326698, -19.3397, 8.6629, 0.326698, -18.4397, 9.2629, 0.326698, -18.4397, 8.0629, 3.0767, -18.9397, 8.0629, 3.0767, -18.6397, 8.3629, 3.0767, -18.5397, 9.4629, 3.0767, -18.3397, 10.0629, 3.0767, -18.4397, 8.9629, 1.0767, -16.9397, 8.5629, 1.0767, -16.9397, 8.7629, 1.0767, -16.5397, 2.0629, 0.826698, -14.6397, 1.4629, 0.826698, -14.6397, 1.5629, 0.826698, -14.4397, 9.3629, 1.0767, -16.8397, 8.6629, 0.826698, -15.6397, 9.1629, 0.826698, -15.7397, 9.3629, 1.0767, -15.9397, 7.8629, 0.826698, -14.4397, 7.3629, 0.826698, -14.6397, 5.3629, 0.826698, -14.6397, 7.8629, 0.826698, -14.6397, 3.9629, 0.826698, -14.6397, 9.3629, 0.826698, -15.2397, 5.1629, 0.826698, -14.8397, 4.1629, 0.826698, -14.8397, 3.4629, 0.826698, -14.6397, 3.2629, 0.826698, -14.8397, 2.2629, 0.826698, -14.8397, 7.1629, 0.826698, -14.8397, 8.6629, 0.826698, -13.7397, 9.2629, 0.826698, -13.7397, 0.562896, 0.826698, -13.9397, 0.362896, 0.826698, -13.7397, 0.462896, 1.0767, -13.2397, 0.762897, 0.826698, -13.6397, 0.762897, 0.826698, -14.6397, 0.562896, 0.826698, -14.4397, -0.137104, 0.826698, -2.73967, -0.737103, 1.0767, -2.73967, -0.537104, 1.0767, -2.43966, 0.762897, 1.0767, -2.23967, 0.462896, 0.826698, -7.73967, 0.462896, 0.826698, -9.63967, 0.162896, 0.826698, -3.03967, -0.737103, 1.0767, -2.23967, -4.1371, 2.3267, -3.03967, -4.1371, 2.3267, -2.13967, 0.262897, 0.826698, -9.03967, 0.262897, 0.826698, -7.93967, 0.262897, 0.826698, -13.0397, 0.262897, 0.826698, -11.8397, 0.262897, 0.826698, -11.0397, 0.262897, 0.826698, -9.83967, 0.462896, 0.826698, -11.6397, 0.462896, 0.826698, -5.83967, 0.262897, 0.826698, -6.03967, 0.462896, 0.826698, -5.33967, 0.262897, 0.826698, -5.13967, 9.0629, 0.326698, -1.73967, 9.2629, 0.326698, -1.93966, 9.2629, 0.326698, -3.03967, 9.0629, 0.326698, -3.23967, 8.6629, 0.326698, -2.23967, 9.0629, 0.326698, -3.73967, 9.2629, 0.326698, -3.93966, 9.2629, 0.326698, -5.03967, 9.0629, 0.326698, -5.73967, 9.2629, 0.326698, -5.93967, 9.2629, 0.326698, -7.03967, 9.0629, 0.326698, -7.23967, 8.6629, 0.326698, -7.33967, 8.4629, 0.326698, -5.23967, 9.0629, 0.326698, -7.73967, 9.2629, 0.326698, -7.93967, 9.2629, 0.326698, -9.03967, 9.0629, 0.326698, -9.23967, 8.6629, 0.326698, -8.13967, 8.8629, 0.326698, -7.53967, 9.0629, 0.326698, -5.23967, 9.0629, 0.326698, -9.73967, 9.2629, 0.326698, -9.93967, 8.6629, 0.326698, -9.83967, 8.8629, 0.326698, -9.63967, 8.9629, 0.326698, -1.43966, 8.9629, 0.326698, 0.460335, 9.2629, 0.326698, 0.0603352, 11.1629, 3.0767, 6.26033, 11.6629, 3.0767, 6.26033, 11.5629, 3.0767, 5.96033, 8.3629, 3.0767, 4.36033, 7.0629, 3.0767, 3.96033, 9.9629, 3.0767, 5.66033, 6.9629, 3.0767, 1.96033, 6.7629, 3.0767, 2.56034, 7.0629, 3.0767, 3.06034, 7.2629, 3.0767, 2.66033, 6.9629, 3.0767, -5.73967, 7.2629, 2.8267, -6.43967, 6.6629, 3.0767, -6.83967, 6.8629, 3.0767, -3.23967, 6.7629, 3.0767, 0.160334, -4.0371, 0.326698, -2.63967, -4.0371, 0.326698, -2.43966, -3.4371, 0.326698, -2.43966, -3.4371, 0.326698, -2.63967, 9.1629, 0.326698, 1.76033, 9.1629, 0.326698, 0.760334, 8.8629, 0.326698, 1.46033, 15.1629, 0.326698, 4.96033, 15.5629, 0.326698, 4.96033, 15.6629, 0.326698, 4.56034, 15.2629, 0.326698, 4.16033, 14.2629, 0.326698, 3.86033, 14.0629, 0.326698, 4.36033, 14.4629, 0.326698, 4.76033, 10.6629, 0.326698, 3.56034, 12.1629, 0.326698, 3.76033, 11.7629, 0.326698, 3.36033, 11.3629, 0.326698, 2.96033, 9.7629, 0.326698, 2.56034, 9.2629, 0.326698, 2.76033, 13.2629, 0.326698, 3.56034, 12.6629, 0.326698, 4.16033, 13.7629, 0.326698, 3.96033)
polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 4), PackedInt32Array(2, 4, 3), PackedInt32Array(6, 5, 7), PackedInt32Array(7, 5, 8), PackedInt32Array(8, 5, 9), PackedInt32Array(12, 11, 10), PackedInt32Array(15, 14, 13), PackedInt32Array(10, 16, 12), PackedInt32Array(12, 16, 19), PackedInt32Array(12, 19, 18), PackedInt32Array(12, 18, 17), PackedInt32Array(22, 21, 20), PackedInt32Array(21, 23, 20), PackedInt32Array(24, 22, 15), PackedInt32Array(15, 22, 20), PackedInt32Array(17, 18, 25), PackedInt32Array(26, 22, 27), PackedInt32Array(27, 22, 24), PackedInt32Array(30, 29, 13), PackedInt32Array(13, 29, 28), PackedInt32Array(22, 31, 21), PackedInt32Array(15, 13, 28), PackedInt32Array(20, 23, 32), PackedInt32Array(32, 23, 33), PackedInt32Array(33, 23, 25), PackedInt32Array(25, 23, 17), PackedInt32Array(15, 28, 24), PackedInt32Array(34, 37, 35), PackedInt32Array(35, 37, 36), PackedInt32Array(39, 38, 34), PackedInt32Array(34, 38, 37), PackedInt32Array(37, 38, 14), PackedInt32Array(37, 14, 15), PackedInt32Array(41, 40, 42), PackedInt32Array(42, 40, 43), PackedInt32Array(45, 37, 44), PackedInt32Array(44, 37, 43), PackedInt32Array(43, 40, 46), PackedInt32Array(42, 47, 41), PackedInt32Array(41, 47, 49), PackedInt32Array(41, 49, 48), PackedInt32Array(51, 50, 44), PackedInt32Array(44, 50, 45), PackedInt32Array(36, 53, 52), PackedInt32Array(55, 54, 45), PackedInt32Array(45, 54, 56), PackedInt32Array(53, 36, 56), PackedInt32Array(56, 36, 37), PackedInt32Array(43, 57, 44), PackedInt32Array(57, 58, 44), PackedInt32Array(43, 59, 57), PackedInt32Array(56, 37, 45), PackedInt32Array(60, 59, 46), PackedInt32Array(46, 59, 43), PackedInt32Array(61, 65, 62), PackedInt32Array(62, 65, 63), PackedInt32Array(63, 65, 64), PackedInt32Array(68, 67, 66), PackedInt32Array(72, 71, 73), PackedInt32Array(73, 71, 70), PackedInt32Array(73, 70, 69), PackedInt32Array(73, 69, 74), PackedInt32Array(75, 79, 76), PackedInt32Array(76, 79, 77), PackedInt32Array(77, 79, 78), PackedInt32Array(72, 80, 75), PackedInt32Array(75, 80, 79), PackedInt32Array(81, 68, 74), PackedInt32Array(74, 68, 66), PackedInt32Array(74, 66, 65), PackedInt32Array(72, 73, 80), PackedInt32Array(85, 84, 82), PackedInt32Array(82, 84, 83), PackedInt32Array(83, 84, 33), PackedInt32Array(33, 84, 32), PackedInt32Array(61, 88, 86), PackedInt32Array(86, 88, 87), PackedInt32Array(69, 81, 74), PackedInt32Array(61, 86, 65), PackedInt32Array(82, 78, 85), PackedInt32Array(85, 78, 79), PackedInt32Array(66, 64, 65), PackedInt32Array(90, 89, 91), PackedInt32Array(91, 89, 94), PackedInt32Array(91, 94, 92), PackedInt32Array(92, 94, 93), PackedInt32Array(97, 96, 98), PackedInt32Array(98, 96, 95), PackedInt32Array(101, 100, 99), PackedInt32Array(97, 98, 93), PackedInt32Array(93, 98, 92), PackedInt32Array(102, 101, 99), PackedInt32Array(95, 103, 98), PackedInt32Array(98, 103, 102), PackedInt32Array(98, 102, 99), PackedInt32Array(107, 106, 104), PackedInt32Array(104, 106, 105), PackedInt32Array(110, 109, 108), PackedInt32Array(113, 112, 111), PackedInt32Array(113, 111, 114), PackedInt32Array(114, 111, 117), PackedInt32Array(114, 117, 116), PackedInt32Array(114, 116, 115), PackedInt32Array(120, 119, 118), PackedInt32Array(120, 118, 121), PackedInt32Array(121, 118, 122), PackedInt32Array(122, 118, 123), PackedInt32Array(126, 116, 124), PackedInt32Array(124, 116, 125), PackedInt32Array(124, 125, 119), PackedInt32Array(124, 119, 120), PackedInt32Array(126, 115, 116), PackedInt32Array(122, 123, 108), PackedInt32Array(108, 123, 110)]
cell_size = 0.1
[node name="Environment" type="WorldEnvironment"]
environment = ExtResource("1_5ixfb")
@ -26,6 +30,7 @@ bake_mask = 4294967293
bake_simplification_distance = 0.2
[node name="LightmapGI" type="LightmapGI" parent="."]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.95704, 0, -2.80582)
quality = 2
directional = true
camera_attributes = SubResource("CameraAttributesPractical_ikuna")
@ -33,250 +38,286 @@ generate_probes_subdiv = 1
light_data = ExtResource("3_h3v2c")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-0.951786, 0.274079, -0.137775, 0.11918, 0.744237, 0.657196, 0.282661, 0.609092, -0.741021, 0.295643, 3.22867, -2.4707)
transform = Transform3D(-0.282662, -0.609093, 0.741018, 0.11918, 0.744235, 0.657198, -0.951787, 0.27408, -0.137775, -1.48634, 3.22867, -2.51018)
light_color = Color(0.95484, 0.837153, 0.722321, 1)
shadow_enabled = true
shadow_blur = 0.118
shadow_blur = 0.132
[node name="dirt_ramp" parent="." instance=ExtResource("3_2vit1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.252364, 0, -2.29605)
[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
navigation_mesh = SubResource("NavigationMesh_e0njj")
[node name="dirt_ramp2" parent="." instance=ExtResource("3_2vit1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.252364, 0.674024, -0.250979)
[node name="dirt_ramp" parent="NavigationRegion3D" instance=ExtResource("3_2vit1")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.88223, 0.502552, -2.51509)
[node name="trenchwall_2m" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -0.546675)
[node name="dirt_ramp2" parent="NavigationRegion3D" instance=ExtResource("3_2vit1")]
transform = Transform3D(-1, 0, 8.74228e-08, -1.9032e-08, 0.976016, -0.2177, -8.5326e-08, -0.2177, -0.976016, 8.92731, -0.455602, -11.143)
[node name="trenchwall_2m2" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -2.55193)
[node name="trenchwall_2m" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -3.41037, 0, -3.0716)
[node name="trenchwall_2m3" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -4.4575)
[node name="trenchwall_2m2" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -1.40511, 0, -3.0716)
[node name="trenchwall_2m4" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -6.36306)
[node name="trenchwall_2m3" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -4.67654)
[node name="trenchwall_2m5" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -8.32269)
[node name="trenchwall_2m4" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -6.5821)
[node name="trenchwall_2m6" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -0.546675)
[node name="trenchwall_2m5" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -8.54173)
[node name="trenchwall_2m36" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, 1.45333)
[node name="trenchwall_2m6" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -3.41037, 0, -2.03585)
[node name="trenchwall_2m37" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, 1.45333)
[node name="trenchwall_2m36" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -5.41037, 0, -3.0716)
[node name="trenchwall_2m7" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -2.55193)
[node name="trenchwall_2m37" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -5.41037, 0, -2.03585)
[node name="trenchwall_2m8" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -4.4575)
[node name="trenchwall_2m7" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -1.40511, 0, -2.03585)
[node name="trenchwall_2m9" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -6.36306)
[node name="trenchwall_2m46" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 0.594886, 0, -2.03585)
[node name="trenchwall_2m10" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769973, 0, -8.32269)
[node name="trenchwall_2m8" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -4.67654)
[node name="trenchwall_2m11" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -10.2944)
[node name="trenchwall_2m47" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -2.67654)
[node name="trenchwall_2m12" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -12.2997)
[node name="trenchwall_2m9" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -6.5821)
[node name="trenchwall_2m13" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -14.2053)
[node name="trenchwall_2m10" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -8.54173)
[node name="trenchwall_2m14" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -16.1108)
[node name="trenchwall_2m11" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557587, 0, -10.5134)
[node name="trenchwall_2m21" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 0.468356, 0, -21.3728)
[node name="trenchwall_2m12" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557587, 0, -12.5187)
[node name="trenchwall_2m22" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 2.46836, 0, -21.3728)
[node name="trenchwall_2m13" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 2.80878, 0, -15.1156)
[node name="trenchwall_2m23" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -1.53164, 0, -21.3728)
[node name="trenchwall_2m48" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.213371, 0, 0.976971, 0, 1, 0, -0.976971, 0, -0.213371, 1.0041, 0, -14.8983)
[node name="trenchwall_2m24" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 4.46836, 0, -21.3728)
[node name="trenchwall_2m49" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.954026, 0, 0.299724, 0, 1, 0, -0.299724, 0, -0.954026, 0.239106, 0, -14.1092)
[node name="trenchwall_2m25" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -3.53164, 0, -21.3728)
[node name="trenchwall_2m14" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 4.71428, 0, -15.1156)
[node name="trenchwall_2m15" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -18.0705)
[node name="trenchwall_2m21" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -14.3814)
[node name="trenchwall_2m26" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.98323, -2.38419e-07, -19.702)
[node name="trenchwall_2m22" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -12.3814)
[node name="trenchwall_2m28" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.33259, -2.38419e-07, -19.702)
[node name="trenchwall_2m23" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -16.3814)
[node name="trenchwall_2m27" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.98323, -2.38419e-07, -19.702)
[node name="trenchwall_2m24" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -10.3814)
[node name="trenchwall_2m16" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -10.2944)
[node name="trenchwall_2m25" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -18.3814)
[node name="trenchwall_2m17" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -12.2997)
[node name="trenchwall_2m15" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 6.67398, 0, -15.1156)
[node name="trenchwall_2m18" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -14.2053)
[node name="trenchwall_2m26" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -16.833)
[node name="trenchwall_2m19" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -16.1108)
[node name="trenchwall_2m28" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -12.5172)
[node name="trenchwall_2m20" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769973, 0, -18.0705)
[node name="trenchwall_2m27" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -18.833)
[node name="dirtpile_large7" parent="." instance=ExtResource("6_wsb7q")]
transform = Transform3D(0.910943, -3.08519e-09, 0.412532, -0.0232438, 0.998411, 0.0513264, -0.411877, -0.0563443, 0.909496, 0.21254, 0.027355, -19.7922)
[node name="trenchwall_2m16" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -10.5134)
[node name="dirtpile_large8" parent="." instance=ExtResource("6_wsb7q")]
transform = Transform3D(0.0524438, -0.030829, 0.998148, -0.0242569, 0.999189, 0.0321357, -0.998329, -0.0258973, 0.0516534, 1.1532, 0.0658178, -20.5826)
[node name="trenchwall_2m17" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -12.5187)
[node name="dirtpile_large9" parent="." instance=ExtResource("6_wsb7q")]
transform = Transform3D(-0.00839367, 0.0319404, -0.999454, -0.0242569, 0.999189, 0.0321356, 0.99967, 0.0245134, -0.00761209, -0.382088, 0.0658178, -20.5826)
[node name="trenchwall_2m18" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 2.80878, 0, -14.0798)
[node name="dirtpile_wall" parent="." instance=ExtResource("7_63acg")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.618189, 4.76837e-07, -11.2607)
[node name="trenchwall_2m19" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 4.71428, 0, -14.0798)
[node name="dirtpile_wall2" parent="." instance=ExtResource("7_63acg")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17294, 0, -14.9847)
[node name="trenchwall_2m20" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 6.67398, 0, -14.0798)
[node name="trenchfloor2" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -0.558091)
[node name="dirtpile_wall" parent="NavigationRegion3D" instance=ExtResource("7_63acg")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.296655, 4.76837e-07, -11.4797)
[node name="trenchfloor3" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -2.55809)
[node name="dirtpile_wall2" parent="NavigationRegion3D" instance=ExtResource("7_63acg")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 3.58818, 0, -13.6769)
[node name="trenchfloor4" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -4.55809)
[node name="trenchfloor2" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.39895, -2.38419e-07, -2.43765)
[node name="trenchfloor5" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -6.55809)
[node name="trenchfloor3" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.39895, -2.38419e-07, -2.43765)
[node name="trenchfloor6" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -8.55809)
[node name="trenchfloor4" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -4.77713)
[node name="trenchfloor7" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -10.5581)
[node name="trenchfloor27" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0.0999623, 0.994991, -4.36949e-09, 0.994991, -0.0999623, -4.34924e-08, 0.6897, 0.502504, -2.57668)
[node name="trenchfloor8" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -12.5581)
[node name="trenchfloor5" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -6.77713)
[node name="trenchfloor9" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -14.5581)
[node name="trenchfloor6" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -8.77713)
[node name="trenchfloor10" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -16.5581)
[node name="trenchfloor7" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -10.7771)
[node name="trenchfloor11" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -18.5581)
[node name="trenchfloor8" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -12.7771)
[node name="trenchfloor12" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.368166, -0.0857527, -20.5581)
[node name="trenchfloor9" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 3.16158, 0.502504, -14.4816)
[node name="trenchfloor13" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.38479, -2.38419e-07, -20.5581)
[node name="trenchfloor28" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 1.16158, 0.502504, -14.4816)
[node name="trenchwall_2m30" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.33259, -2.38419e-07, -19.702)
[node name="trenchfloor10" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5.16158, 0.502504, -14.4816)
[node name="trenchfloor16" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.38479, -2.38419e-07, -20.5581)
[node name="trenchfloor11" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 7.16158, 0.502504, -14.4816)
[node name="trenchwall_2m29" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 6.46836, 0, -21.3728)
[node name="trenchfloor12" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(0.992548, -0.119669, -0.0229919, 0.119637, 0.992814, -0.00277134, 0.0231583, 5.19146e-10, 0.999732, 9.10488, 0.493173, -14.4816)
[node name="trenchwall_2m31" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.33259, -2.38419e-07, -19.702)
[node name="trenchfloor13" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -12.465)
[node name="trenchfloor17" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.38479, -2.38419e-07, -20.5581)
[node name="trenchwall_2m30" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -10.5172)
[node name="trenchwall_2m32" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 8.46836, 0, -21.3728)
[node name="trenchfloor16" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -10.465)
[node name="trenchwall_2m34" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 10.4684, 0, -21.3728)
[node name="trenchwall_2m29" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -8.38144)
[node name="trenchwall_2m35" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 12.4684, 0, -21.3728)
[node name="trenchwall_2m31" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -8.51721)
[node name="trenchwall_2m38" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 14.4684, 0, -21.3728)
[node name="trenchfloor17" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -8.46501)
[node name="trenchwall_2m40" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(0.0428523, 0, 0.999081, 0, 1, 0, -0.999081, 0, 0.0428523, 15.3368, 0, -21.4596)
[node name="trenchwall_2m32" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -6.38144)
[node name="trenchwall_2m39" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.957541, 0, 0.288297, 0, 1, 0, -0.288297, 0, -0.957541, 17.3791, 0, -22.8527)
[node name="trenchwall_2m34" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -4.3814)
[node name="trenchwall_2m33" parent="." instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.0650884, 0.0426316, -0.996969, -0.0121901, 0.998978, 0.0435134, 0.997805, 0.0149854, -0.0645022, 8.0479, -0.0569355, -19.6773)
[node name="trenchwall_2m35" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -2.3814)
[node name="trenchfloor18" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.38478, -2.38419e-07, -20.5581)
[node name="trenchwall_2m38" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -0.381403)
[node name="trenchfloor19" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 10.3848, -2.38419e-07, -20.5581)
[node name="trenchwall_2m40" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(0.999081, 0, -0.0428523, 0, 1, 0, 0.0428523, 0, 0.999081, 9.71508, 0, 0.486997)
[node name="trenchfloor20" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 12.3848, -2.38419e-07, -20.5581)
[node name="trenchwall_2m39" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 11.1082, 0, 2.5293)
[node name="trenchfloor21" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 14.3848, -2.38419e-07, -20.5581)
[node name="trenchwall_2m41" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 13.0233, 0, 3.1059)
[node name="trenchfloor22" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(0.398461, 0, -0.917185, 0, 1, 0, 0.917185, 0, 0.398461, 16.6526, -2.38419e-07, -21.0803)
[node name="trenchwall_2m42" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 14.9384, 0, 3.6825)
[node name="trenchfloor24" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(0.982097, 0, -0.188376, 0, 1, 0, 0.188376, 0, 0.982097, 18.688, -2.38419e-07, -23.8306)
[node name="trenchwall_2m43" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 14.7206, 0, 5.1742)
[node name="trenchfloor23" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(0.967806, 0, -0.251698, 0, 1, 0, 0.251698, 0, 0.967806, 18.3409, -0.0373774, -22.3664)
[node name="trenchwall_2m44" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 12.8094, 0, 4.585)
[node name="trenchfloor14" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.8833, -2.38419e-07, -20.5581)
[node name="trenchwall_2m45" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 10.8981, 0, 3.9958)
[node name="trenchfloor15" parent="." instance=ExtResource("8_14rhs")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.8833, -2.38419e-07, -20.5581)
[node name="trenchwall_2m33" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
transform = Transform3D(-0.997805, -0.0149854, 0.0645022, -0.0121901, 0.998978, 0.0435134, -0.0650885, 0.0426316, -0.996969, 8.28078, -0.0569355, -6.8019)
[node name="dirtpile_wall_large" parent="." instance=ExtResource("9_y6ebv")]
transform = Transform3D(-0.176277, 0, -0.984341, 0, 1, 0, 0.984341, 0, -0.176277, -0.984003, 0.109982, -19.4195)
[node name="trenchfloor18" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -6.46502)
[node name="wooden_bar_large" parent="." instance=ExtResource("10_r53rh")]
transform = Transform3D(0.816694, -0.00618675, 0.577037, -0.00080363, 0.999929, 0.0118582, -0.57707, -0.0101483, 0.816632, 16.5566, -0.256461, -21.8492)
[node name="trenchfloor19" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -4.465)
[node name="wooden_bar_large2" parent="." instance=ExtResource("10_r53rh")]
transform = Transform3D(-0.699589, 0, 0.714546, 0, 1, 0, -0.714546, 0, -0.699589, -0.798373, -0.242456, -19.1719)
[node name="trenchfloor20" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -2.465)
[node name="wooden_bar_large3" parent="." instance=ExtResource("10_r53rh")]
transform = Transform3D(-0.551777, 0, -0.833992, 0, 1, 0, 0.833992, 0, -0.551777, 1.24631, -0.242456, -19.1784)
[node name="trenchfloor21" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -0.465003)
[node name="trenchwall_2m_dirt" parent="." instance=ExtResource("11_kca0e")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1.4335, -0.119269, -20.5922)
[node name="trenchfloor22" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.917185, 0, -0.398461, 0, 1, 0, 0.398461, 0, -0.917185, 9.62699, -0.0401146, 1.20087)
[node name="trenchwall_5m_dirt" parent="." instance=ExtResource("12_t2jcw")]
transform = Transform3D(0.0512255, -0.00609195, -0.998668, 0.118092, 0.993003, -1.16415e-10, 0.991681, -0.117935, 0.0515864, 10.4383, -0.290734, -19.4085)
[node name="trenchfloor26" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.765472, 0, -0.643469, 0, 1, 0, 0.643469, 0, -0.765472, 9.99257, -0.00441432, 2.57248)
[node name="trenchwall_5m_dirt2" parent="." instance=ExtResource("12_t2jcw")]
transform = Transform3D(0.0512378, 0, -0.998686, 0, 1, 0, 0.998686, 0, 0.0512378, 15.5141, -0.110156, -19.8343)
[node name="trenchfloor24" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.188376, 0, -0.982097, 0, 1, 0, 0.982097, 0, -0.188376, 12.8151, -2.38419e-07, 3.8382)
[node name="trenchwall_5m_dirt3" parent="." instance=ExtResource("12_t2jcw")]
transform = Transform3D(0.880411, 0, -0.474211, 0, 1, 0, 0.474211, 0, 0.880411, 18.6627, -0.110156, -21.4719)
[node name="trenchfloor25" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.188376, 0, -0.982097, 0, 1, 0, 0.982097, 0, -0.188376, 14.7793, -2.38419e-07, 4.215)
[node name="trenchwall_2m_dirt2" parent="." instance=ExtResource("11_kca0e")]
transform = Transform3D(0.561232, -0.0192946, -0.827434, 0.0343588, 0.99941, 0, 0.826945, -0.0284296, 0.561564, 17.4683, -0.221343, -20.0395)
[node name="trenchfloor23" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.251698, 0, -0.967806, 0, 1, 0, 0.967806, 0, -0.251698, 11.3509, -0.0373774, 3.4911)
[node name="walkover2" parent="." instance=ExtResource("13_bq7v3")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.38335, 0, -20.4729)
[node name="trenchfloor14" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-0.99452, -0.0848907, 0.0610269, -0.077975, 0.991095, 0.107938, -0.0696463, 0.102588, -0.992283, 9.14388, 0.575037, -16.4858)
[node name="trenchfloor15" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.16158, -2.38419e-07, -18.7331)
[node name="dirtpile_wall_large" parent="NavigationRegion3D" instance=ExtResource("9_y6ebv")]
transform = Transform3D(-0.984341, 0, 0.176277, 0, 1, 0, -0.176277, 0, -0.984341, 8.02298, 0.109982, -15.8338)
[node name="wooden_bar_large" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
transform = Transform3D(0.57707, 0.0101483, -0.816632, -0.00080363, 0.999929, 0.0118582, 0.816694, -0.00618675, 0.577037, 10.1047, -0.256461, 1.7068)
[node name="wooden_bar_large2" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
transform = Transform3D(0.714546, 0, 0.699589, 0, 1, 0, -0.699589, 0, 0.714546, 7.77538, -0.242456, -15.6482)
[node name="wooden_bar_large3" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
transform = Transform3D(-0.833992, 0, 0.551777, 0, 1, 0, -0.551777, 0, -0.833992, 7.78188, -0.242456, -13.6035)
[node name="wooden_bar_large4" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
transform = Transform3D(-0.741191, 0, -0.671294, 0, 1, 0, 0.671294, 0, -0.741191, 1.68311, -0.242456, -13.5949)
[node name="trenchwall_2m_dirt" parent="NavigationRegion3D" instance=ExtResource("11_kca0e")]
transform = Transform3D(0.18685, 0, 0.982388, 0, 1, 0, -0.982388, 0, 0.18685, 8.72598, -0.119269, -17.2231)
[node name="trenchwall_5m_dirt" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
transform = Transform3D(-0.991681, 0.117935, -0.0515864, 0.118092, 0.993003, -2.3283e-10, 0.0512255, -0.00609194, -0.998668, 8.01198, -0.290734, -4.4115)
[node name="trenchwall_5m_dirt2" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
transform = Transform3D(-0.998686, 0, -0.0512378, 0, 1, 0, 0.0512378, 0, -0.998686, 8.43778, -0.110156, 0.664297)
[node name="trenchwall_5m_dirt3" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
transform = Transform3D(-0.474211, 0, -0.880411, 0, 1, 0, 0.880411, 0, -0.474211, 10.0754, -0.110156, 3.8129)
[node name="trenchwall_2m_dirt2" parent="NavigationRegion3D" instance=ExtResource("11_kca0e")]
transform = Transform3D(-0.826945, 0.0284296, -0.561564, 0.0343588, 0.99941, 1.04599e-09, 0.561232, -0.0192946, -0.827434, 8.64298, -0.221343, 2.6185)
[node name="walkover3" parent="." instance=ExtResource("13_bq7v3")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.39592, 0, -20.4729)
transform = Transform3D(0.146791, 0, -0.989167, 0, 1, 0, 0.989167, 0, 0.146791, 6.32769, 0.4036, -14.728)
[node name="walkover4" parent="." instance=ExtResource("13_bq7v3")]
transform = Transform3D(-0.996345, -0.0854169, 8.7263e-08, -0.0854169, 0.996345, 3.73369e-09, -8.7263e-08, -3.73369e-09, -1, 9.09391, 0.20791, -10.4648)

Binary file not shown.

View File

@ -0,0 +1,50 @@
[gd_scene load_steps=8 format=3 uid="uid://be2yogspyg40p"]
[ext_resource type="Material" uid="uid://cnpi4nqbif0st" path="res://particles/materials/dirt_splatters.tres" id="1_70hen"]
[sub_resource type="Curve" id="Curve_f77sp"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -3.4158, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_jj8d7"]
curve = SubResource("Curve_f77sp")
[sub_resource type="Curve" id="Curve_58b4i"]
max_value = 3.0
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.0803571, 0.990632), 0.0, 0.0, 0, 0, Vector2(1, 2.70316), 0.0, 0.0, 0, 0]
point_count = 3
[sub_resource type="CurveTexture" id="CurveTexture_62j87"]
curve = SubResource("Curve_58b4i")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2cudr"]
particle_flag_align_y = true
particle_flag_rotate_y = true
angle_min = 1.07288e-05
angle_max = 720.0
direction = Vector3(0, 0, 1)
spread = 2.905
initial_velocity_min = 1.5
initial_velocity_max = 10.0
scale_max = 1.5
scale_curve = SubResource("CurveTexture_62j87")
scale_over_velocity_min = 1.0
scale_over_velocity_max = 5.0
alpha_curve = SubResource("CurveTexture_jj8d7")
[sub_resource type="QuadMesh" id="QuadMesh_ccn0f"]
material = ExtResource("1_70hen")
size = Vector2(1.5, 1.5)
[node name="ExplosionParticles" type="GPUParticles3D"]
transform = Transform3D(-1, 0, -8.74228e-08, -8.74228e-08, 4.37114e-08, 1, 0, 1, -4.37114e-08, 0, 0, 0)
emitting = false
amount = 20
lifetime = 1.5
one_shot = true
explosiveness = 0.99
fixed_fps = 60
visibility_aabb = AABB(-3, -3, -1, 6, 6, 10)
draw_order = 3
process_material = SubResource("ParticleProcessMaterial_2cudr")
draw_pass_1 = SubResource("QuadMesh_ccn0f")

View File

@ -0,0 +1,13 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cnpi4nqbif0st"]
[ext_resource type="Texture2D" uid="uid://evisqjqwkms5" path="res://particles/textures/dirt_splatters.png" id="1_3l7wc"]
[resource]
transparency = 1
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_3l7wc")
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false

BIN
godot/particles/textures/dirt_splatters.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://evisqjqwkms5"
path.s3tc="res://.godot/imported/dirt_splatters.png-0bb5e5bc05cbbd02895b9062e1744bad.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://particles/textures/dirt_splatters.png"
dest_files=["res://.godot/imported/dirt_splatters.png-0bb5e5bc05cbbd02895b9062e1744bad.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 KiB

View File

@ -18,12 +18,17 @@ config/icon="res://icon.svg"
[display]
window/size/viewport_width=2304
window/size/viewport_height=1296
window/size/viewport_width=1920
window/size/viewport_height=1080
window/size/mode=3
window/stretch/mode="viewport"
window/stretch/aspect="keep_width"
[editor]
version_control/plugin_name="GitPlugin"
version_control/autoload_on_startup=true
[input]
dir_forward={
@ -83,14 +88,18 @@ run={
]
}
[navigation]
3d/default_cell_size=0.1
[physics]
2d/run_on_separate_thread=true
3d/run_on_separate_thread=true
common/physics_interpolation=true
[rendering]
scaling_3d/mode=1
scaling_3d/scale=0.8
anti_aliasing/quality/msaa_3d=2
anti_aliasing/quality/screen_space_aa=1
occlusion_culling/use_occlusion_culling=true

BIN
models/character.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
models/modules.blend (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
models/textures/dirt.kra (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
models/textures/dirt_splatters.kra (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
models/textures/muzzleflash.kra (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
models/textures/muzzleflash.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

13
src/enemy.cpp Normal file
View File

@ -0,0 +1,13 @@
#include "enemy.hpp"
void Enemy::_bind_methods() {}
void Enemy::_ready() {
this->anim_tree = this->get_node<PlayerAnimTree>("CharacterModel/AnimationTree");
}
void Enemy::damage() {
this->anim_tree->death_animation();
this->set_collision_mask(0x0);
this->set_collision_layer(0x0);
}

19
src/enemy.hpp Normal file
View File

@ -0,0 +1,19 @@
#ifndef ENEMY_HPP
#define ENEMY_HPP
#include "damageable_entity.hpp"
#include "player_anim_tree.hpp"
#include <godot_cpp/classes/character_body3d.hpp>
namespace gd = godot;
class Enemy : public gd::CharacterBody3D, public DamageableEntity {
GDCLASS(Enemy, gd::CharacterBody3D);
static void _bind_methods();
public:
virtual void _ready() override;
virtual void damage() override;
private:
PlayerAnimTree *anim_tree{nullptr};
};
#endif // !ENEMY_HPP

37
src/hitscan_muzzle.cpp Normal file
View File

@ -0,0 +1,37 @@
#include "hitscan_muzzle.hpp"
#include "damageable_entity.hpp"
#include "godot_cpp/variant/callable.hpp"
#include "utils/godot_macros.hpp"
#include <godot_cpp/classes/physics_direct_space_state3d.hpp>
#include <godot_cpp/classes/physics_ray_query_parameters3d.hpp>
#include <godot_cpp/classes/world3d.hpp>
#include <godot_cpp/variant/utility_functions.hpp>
void HitscanMuzzle::_bind_methods() {
#define CLASSNAME HitscanMuzzle
GDFUNCTION(fire); // allow fire() to be called from animation tracks
}
void HitscanMuzzle::_ready() {
this->set_enabled(false);
this->set_physics_process(false);
}
void HitscanMuzzle::_physics_process(double) {
this->fire_physics_check();
this->set_physics_process(false); // since _physics_process is only used for fire_physics_check, just disable it immediately
}
void HitscanMuzzle::fire() {
this->set_physics_process(true); // offload physics checks to physics process to avoid multithreading issues
}
void HitscanMuzzle::fire_physics_check() {
this->force_raycast_update(); // since we disabled automatic updating (set_enabled(false) in _ready), we'll have to force update here.
gd::Object *hit{this->get_collider()};
if(hit == nullptr) return; // nothing was hit
// see if the hit object can be damaged, damage if so
DamageableEntity *damage_iface{dynamic_cast<DamageableEntity*>(hit)};
if(damage_iface == nullptr) return; // hit object can't be damaged.
damage_iface->damage();
}

22
src/hitscan_muzzle.hpp Normal file
View File

@ -0,0 +1,22 @@
#ifndef HITSCAN_MUZZLE_HPP
#define HITSCAN_MUZZLE_HPP
#include <godot_cpp/classes/node3d.hpp>
#include <godot_cpp/classes/physics_body3d.hpp>
#include <godot_cpp/classes/ray_cast3d.hpp>
#include <godot_cpp/templates/vector.hpp>
namespace gd = godot;
class HitscanMuzzle : public gd::RayCast3D {
GDCLASS(HitscanMuzzle, gd::RayCast3D);
static void _bind_methods();
public:
virtual void _ready() override;
virtual void _physics_process(double) override;
void fire(); // prep a deferred call to fire_physics_check
private:
void fire_physics_check();
};
#endif // !HITSCAN_MUZZLE_HPP

View File

@ -11,13 +11,16 @@ void Player::_bind_methods() {
void Player::_ready() {
if(gd::Engine::get_singleton()->is_editor_hint())
return;
this->anim_tree = this->get_node<PlayerAnimTree>("%AnimationTree");
// setup input callbacks
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_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->input->listen_to(utils::PlayerInput::Listener("run", callable_mp(this, &Player::_on_run)));
// get components
this->anim_tree = this->get_node<PlayerAnimTree>("CharacterModel/AnimationTree");
this->model_node = this->get_node<gd::Node3D>("%CharacterModel");
// setup camera
this->camera_parent = this->get_node<gd::Node3D>("%CameraParent");
this->camera_parent->set_global_rotation(this->get_global_rotation());
}
@ -25,22 +28,20 @@ void Player::_ready() {
void Player::_process(double delta) {
if(gd::Engine::get_singleton()->is_editor_hint())
return;
if(this->input_fire >= 0.0)
this->input_fire -= delta;
this->process_rotate(delta);
this->process_transform_camera(delta);
// calculate the motion based on model-space motion and global basis
// process rotations
this->process_rotate(delta); // global character rotation
this->process_transform_camera(delta); // camera input rotation
// set the global motion based on model-space motion vector
gd::Basis const &model_basis{this->model_node->get_global_basis()};
this->anim_tree->set_walk_speed(gd::Math::max(0.f, model_basis.get_column(2).dot(this->camera_parent->get_basis().get_column(2))));
gd::Vector3 const local_motion{this->anim_tree->get_root_motion_position()};
gd::Vector3 const motion {
local_motion.x * model_basis.get_column(0) +
local_motion.y * model_basis.get_column(1) +
local_motion.z * model_basis.get_column(2) +
(this->is_on_floor() ? gd::Vector3{} : gd::Vector3{0.f, -1.f, 0.f}) // add some gravity if required
local_motion.z * model_basis.get_column(2)
+ (this->is_on_floor() ? gd::Vector3{} : gd::Vector3{0.f, -0.05f, 0.f}) // add some gravity if required
};
// set velocity and move
this->set_velocity(motion / delta);
this->set_velocity(motion / delta); // velocity has to be in m/s, root motion is framerate-dependent. meters/second=distance/time.
}
void Player::_physics_process(double delta [[maybe_unused]]) {
@ -50,7 +51,7 @@ void Player::_physics_process(double delta [[maybe_unused]]) {
}
void Player::damage() {
this->anim_tree->death_animation();
}
void Player::process_transform_camera(double delta) {
@ -79,8 +80,8 @@ void Player::_on_dir_horizontal(gd::Ref<gd::InputEvent>, float value) {
void Player::_on_dir_vertical(gd::Ref<gd::InputEvent>, float value) {
this->input_directions.y = value;
this->anim_tree->set_aim_weapon(value <= -0.9f);
this->anim_tree->set_is_walking(value > 0.5f);
this->anim_tree->set_aim_weapon(value <= AIM_INPUT_THRESHOLD);
this->anim_tree->set_is_walking(value > WALK_INPUT_THRESHOLD);
}
void Player::_on_fire(gd::Ref<gd::InputEvent> event, float) {

View File

@ -32,11 +32,12 @@ private:
utils::PlayerInput *input{nullptr};
gd::Node3D *model_node{nullptr};
gd::Vector2 input_directions{0.f, 0.f};
double input_fire{0.0};
float const ROTATION_SPEED{1.8f};
float const CAMERA_ROTATION_SPEED{2.f};
float const AIMING_CAMERA_ROTATION_SPEED{1.f};
float const AIM_INPUT_THRESHOLD{-0.9f};
float const WALK_INPUT_THRESHOLD{0.5f};
};
#endif // !TR_PLAYER_HPP

View File

@ -13,6 +13,7 @@ void PlayerAnimTree::_bind_methods() {
}
void PlayerAnimTree::_ready() {
this->parent_3d = gd::Object::cast_to<gd::Node3D>(this->get_parent());
this->fsm = this->get("parameters/Actions/playback");
}
@ -24,6 +25,12 @@ void PlayerAnimTree::_process(double delta) {
this->update_tags(this->fsm->get_current_node());
this->fire_weapon -= delta;
this->running_time -= delta;
if(this->is_dead && this->death_blend < 1.f) {
this->death_blend = gd::Math::min(this->death_blend + float(delta * this->DEATH_BLEND_SPEED), 1.f);
this->set("parameters/DeathBlend/blend_amount", this->death_blend);
}
this->parent_3d->set_quaternion(this->get_root_motion_rotation_accumulator());
this->parent_3d->rotate_y(M_PIf);
}
void PlayerAnimTree::set_target_turn_speed(float value) {
@ -52,7 +59,7 @@ float PlayerAnimTree::get_walk_speed() const {
}
void PlayerAnimTree::set_is_running() {
this->running_time = 0.25;
this->running_time = this->RUN_PARAM_DECAY;
}
bool PlayerAnimTree::get_is_running() const {
@ -68,7 +75,7 @@ bool PlayerAnimTree::get_aim_weapon() const {
}
void PlayerAnimTree::set_fire_weapon() {
this->fire_weapon = 0.5f;
this->fire_weapon = this->FIRE_PARAM_DECAY;
}
bool PlayerAnimTree::get_fire_weapon() {
@ -77,6 +84,11 @@ bool PlayerAnimTree::get_fire_weapon() {
return is_set;
}
void PlayerAnimTree::death_animation() {
this->set("parameters/DeathSeek/request", 0.f);
this->is_dead = true;
}
bool PlayerAnimTree::match_tags(Tags tags) const {
return (this->current_tags & tags) != Tags::None;
}

View File

@ -2,8 +2,9 @@
#define PLAYER_ANIM_TREE_HPP
#include "utils/godot_macros.hpp"
#include <godot_cpp/classes/animation_tree.hpp>
#include <godot_cpp/classes/animation_node_state_machine_playback.hpp>
#include <godot_cpp/classes/animation_tree.hpp>
#include <godot_cpp/classes/node3d.hpp>
namespace gd = godot;
class PlayerAnimTree : public gd::AnimationTree {
@ -32,11 +33,17 @@ public:
void set_fire_weapon();
bool get_fire_weapon();
bool match_tags(Tags tags) const;
void death_animation();
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 RUN_PARAM_DECAY{0.25}; //!< how many seconds to run every time set_is_running is called
gd::Node3D *parent_3d{nullptr};
gd::Ref<gd::AnimationNodeStateMachinePlayback> fsm;
float turn_speed{0.f};
float target_turn_speed{0.f};
@ -45,6 +52,8 @@ private:
double running_time{0.0};
bool aim_weapon{false};
double fire_weapon{0.0};
float death_blend{0.f};
bool is_dead{false};
Tags current_tags{Tags::None};
gd::StringName last_known_anim{};
};

View File

@ -6,6 +6,9 @@
#include <godot_cpp/godot.hpp>
#include "player.hpp"
#include "player_anim_tree.hpp"
#include "enemy.hpp"
#include "hitscan_muzzle.hpp"
using namespace godot;
@ -17,6 +20,8 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level)
utils::godot_cpp_utils_register_types();
GDREGISTER_CLASS(Player);
GDREGISTER_CLASS(PlayerAnimTree);
GDREGISTER_CLASS(Enemy);
GDREGISTER_CLASS(HitscanMuzzle);
}
extern "C"