add particle hit effect

This commit is contained in:
2025-07-27 03:01:03 +10:00
parent d35384c0b3
commit 4f0dbe4c17
15 changed files with 399 additions and 115 deletions

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@
*.tmp
*.*~
*-autosave.kra

Binary file not shown.

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmbyt03a78682"
path.s3tc="res://.godot/imported/projectile_hit_effect.png-ab40411344c419a5e71caf94e2065868.s3tc.ctex"
path.etc2="res://.godot/imported/projectile_hit_effect.png-ab40411344c419a5e71caf94e2065868.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/textures/effects/projectile_hit_effect.png"
dest_files=["res://.godot/imported/projectile_hit_effect.png-ab40411344c419a5e71caf94e2065868.s3tc.ctex", "res://.godot/imported/projectile_hit_effect.png-ab40411344c419a5e71caf94e2065868.etc2.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.

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dk3nilys1gide"
path.s3tc="res://.godot/imported/projectile_hit_effect_sub.png-3ef10c46ab5c958857e5f8435d227c25.s3tc.ctex"
path.etc2="res://.godot/imported/projectile_hit_effect_sub.png-3ef10c46ab5c958857e5f8435d227c25.etc2.ctex"
metadata={
"imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true
}
[deps]
source_file="res://assets/textures/effects/projectile_hit_effect_sub.png"
dest_files=["res://.godot/imported/projectile_hit_effect_sub.png-3ef10c46ab5c958857e5f8435d227c25.s3tc.ctex", "res://.godot/imported/projectile_hit_effect_sub.png-3ef10c46ab5c958857e5f8435d227c25.etc2.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,15 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://pjyvs328ew3u"]
[ext_resource type="Texture2D" uid="uid://cmbyt03a78682" path="res://assets/textures/effects/projectile_hit_effect.png" id="1_7rp2r"]
[resource]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
vertex_color_is_srgb = true
albedo_texture = ExtResource("1_7rp2r")
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 2
particles_anim_v_frames = 2
particles_anim_loop = false

View File

@@ -0,0 +1,15 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://sn3w7fpf2k0b"]
[ext_resource type="Texture2D" uid="uid://dk3nilys1gide" path="res://assets/textures/effects/projectile_hit_effect_sub.png" id="1_0npha"]
[resource]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
vertex_color_is_srgb = true
albedo_texture = ExtResource("1_0npha")
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false

View File

@@ -4,7 +4,6 @@
[resource]
transparency = 1
blend_mode = 1
shading_mode = 0
albedo_color = Color(0.964706, 0.788235, 0.215686, 0.109804)
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("1_2xhdi")

View File

@@ -106,35 +106,35 @@ _collision_debug_material = ExtResource("2_0p422")
[node name="Model" parent="." instance=ExtResource("3_f1ej7")]
[node name="Skeleton3D" parent="Model/Armature" index="0"]
bones/0/position = Vector3(-0.537868, 1.0281, -0.10541)
bones/0/rotation = Quaternion(0.729026, -0.0928637, -0.672933, -0.0840203)
bones/0/position = Vector3(-0.543134, 1.08788, -0.0917138)
bones/0/rotation = Quaternion(0.711732, -0.168641, -0.662063, -0.163313)
bones/0/scale = Vector3(1, 1, 1)
bones/1/position = Vector3(-9.75365e-05, 0.0319142, -0.124525)
bones/1/rotation = Quaternion(-0.000141591, 0.789452, 0.613812, 0.000224233)
bones/2/rotation = Quaternion(6.24507e-10, 4.41808e-08, -6.03351e-10, 1)
bones/2/scale = Vector3(1, 1, 1)
bones/3/rotation = Quaternion(1.74623e-10, -2.60798e-10, -1.30968e-10, 1)
bones/4/position = Vector3(-0.0213358, 0.931413, -0.0438835)
bones/4/rotation = Quaternion(0.257992, -0.279597, -0.042176, 0.923844)
bones/4/position = Vector3(-0.0315981, 0.953029, -0.0546811)
bones/4/rotation = Quaternion(0.295319, -0.327641, -0.107915, 0.89095)
bones/5/position = Vector3(6.05363e-09, 0.111695, -8.19564e-08)
bones/5/rotation = Quaternion(0.0662777, -0.131196, 0.198453, 0.969026)
bones/6/rotation = Quaternion(-0.419054, -0.137958, 0.0262865, 0.897034)
bones/7/rotation = Quaternion(0.329718, 0.258561, -0.27923, 0.863981)
bones/8/rotation = Quaternion(-0.215187, 0.315493, 0.125256, 0.91568)
bones/5/rotation = Quaternion(0.0696866, -0.110981, 0.261727, 0.956204)
bones/6/rotation = Quaternion(-0.419676, -0.109495, 0.0130086, 0.900951)
bones/7/rotation = Quaternion(0.3265, 0.284802, -0.251691, 0.865411)
bones/8/rotation = Quaternion(-0.2495, 0.296628, 0.151267, 0.90933)
bones/9/rotation = Quaternion(1.13474e-07, 0.707107, 0.707107, -5.23149e-08)
bones/10/scale = Vector3(1, 1, 1)
bones/11/position = Vector3(-0.00968189, -1.10066e-08, -0.00662707)
bones/11/scale = Vector3(1.08891, 1, 1)
bones/11/scale = Vector3(1.00139, 1, 1)
bones/12/position = Vector3(-0.00823868, 6.83734e-08, -0.0102097)
bones/13/position = Vector3(-0.0208772, 1.28692e-07, 0.00347639)
bones/13/scale = Vector3(1.08891, 1, 0.85497)
bones/14/position = Vector3(-0.0348034, 1.17923e-07, -0.00384641)
bones/14/scale = Vector3(1.08891, 1, 0.85497)
bones/13/position = Vector3(-0.0195226, 6.92139e-09, 0.00588929)
bones/13/scale = Vector3(1.00139, 1, 0.997734)
bones/14/position = Vector3(-0.0323295, 2.96327e-09, -0.00265635)
bones/14/scale = Vector3(1.00139, 1, 0.997734)
bones/15/position = Vector3(-0.0186913, 1.4579e-07, -0.0116523)
bones/16/position = Vector3(0.0152802, -8.55124e-08, 0.0116922)
bones/16/scale = Vector3(1.08891, 1, 0.85497)
bones/17/position = Vector3(0.0299582, -6.64203e-08, 0.00463103)
bones/17/scale = Vector3(1.08891, 1, 1)
bones/16/position = Vector3(0.013901, 8.25914e-08, 0.0150569)
bones/16/scale = Vector3(1.00139, 1, 0.997735)
bones/17/position = Vector3(0.0275303, 9.00419e-08, 0.0069467)
bones/17/scale = Vector3(1.00139, 1, 1)
bones/18/position = Vector3(0.0138112, -1.99382e-07, -0.0106829)
bones/19/position = Vector3(-0.029965, -6.74833e-08, -0.0114938)
bones/20/position = Vector3(0.0319374, 2.70462e-10, -0.00811319)
@@ -144,19 +144,19 @@ bones/22/position = Vector3(-0.00351833, -2.67936e-08, 0.0010112)
bones/25/position = Vector3(-0.0442944, 0.0756561, 0.0940351)
bones/25/rotation = Quaternion(-0.161417, 0.667625, 0.688436, 0.232975)
bones/26/position = Vector3(0.00351835, 2.9417e-08, 0.00101115)
bones/29/rotation = Quaternion(0.0348119, -0.609386, 0.790604, 0.0488095)
bones/30/rotation = Quaternion(-0.0795463, -0.00713307, -0.072255, 0.994183)
bones/29/rotation = Quaternion(0.0382404, -0.550798, 0.832483, 0.0461726)
bones/30/rotation = Quaternion(-0.0957824, 0.000982907, 0.0254876, 0.995075)
bones/31/rotation = Quaternion(0.00282337, 0.992799, -0.117349, -0.0238866)
bones/32/rotation = Quaternion(0.51819, 2.60584e-08, -1.29504e-06, 0.855265)
bones/32/rotation = Quaternion(0.618082, -1.36521e-07, -1.28249e-06, 0.786113)
bones/33/rotation = Quaternion(-0.0342351, -3.5846e-07, 8.54711e-08, 0.999414)
bones/35/rotation = Quaternion(0.249306, -0.106935, 0.274008, 0.922676)
bones/36/rotation = Quaternion(-0.557204, 3.58411e-07, 4.60852e-07, 0.830376)
bones/37/rotation = Quaternion(-0.124018, -0.101153, 0.10961, 0.981006)
bones/38/rotation = Quaternion(-0.581882, 3.27627e-07, 9.75025e-07, 0.813273)
bones/35/rotation = Quaternion(0.386226, -0.0288097, 0.216781, 0.896106)
bones/36/rotation = Quaternion(-0.676116, 2.82218e-07, 5.06251e-07, 0.736795)
bones/37/rotation = Quaternion(0.0468953, -0.0785536, 0.0557795, 0.994243)
bones/38/rotation = Quaternion(-0.587791, 3.22231e-07, 9.83445e-07, 0.809013)
bones/39/rotation = Quaternion(0.197471, 0.678974, 0.678974, -0.19747)
bones/39/scale = Vector3(1.07535, 1, 0.915612)
bones/41/position = Vector3(0.0139192, 0.000225329, -0.00384292)
bones/41/rotation = Quaternion(2.32454e-08, -0.00598613, -1.36913e-07, 0.999982)
bones/39/scale = Vector3(1.0011, 1, 0.998774)
bones/41/position = Vector3(0.0128964, 0.000225329, -0.00384278)
bones/41/rotation = Quaternion(-9.69781e-10, -0.00708393, -1.34122e-07, 0.999975)
bones/41/scale = Vector3(0.999981, 1, 0.538573)
bones/42/position = Vector3(0.0392888, -1.17533e-06, -0.00209796)
bones/43/position = Vector3(-0.0495715, -2.58908e-06, 0.0301691)
@@ -164,9 +164,9 @@ bones/44/position = Vector3(-0.00910762, -1.30386e-08, 0.00452032)
bones/45/position = Vector3(-0.013421, 6.33299e-08, -0.0283991)
bones/46/position = Vector3(-0.0513805, 8.90344e-07, -0.0104124)
bones/47/position = Vector3(0.0446487, -1.27684e-06, -0.0177286)
bones/48/scale = Vector3(1.07535, 1, 0.865321)
bones/50/position = Vector3(-0.0170028, 0.000225411, -0.00485537)
bones/50/rotation = Quaternion(1.248e-08, -0.00728642, 6.79947e-08, 0.999973)
bones/48/scale = Vector3(1.0011, 1, 0.998043)
bones/50/position = Vector3(-0.0180255, 0.000225338, -0.00485544)
bones/50/rotation = Quaternion(-6.48622e-09, -0.00862222, 1.11814e-08, 0.999963)
bones/50/scale = Vector3(0.999977, 1, 0.397035)
bones/51/position = Vector3(-0.0392888, -1.22121e-06, -0.00333335)
bones/52/position = Vector3(0.0495715, -2.68185e-06, 0.0147188)
@@ -174,16 +174,16 @@ bones/53/position = Vector3(0.00910765, -7.47593e-08, 0.000409614)
bones/54/position = Vector3(0.0134209, 4.70912e-08, -0.0184937)
bones/55/position = Vector3(0.0513805, 9.29226e-07, -0.0104125)
bones/56/position = Vector3(-0.0446488, -1.30966e-06, -0.0177287)
bones/57/rotation = Quaternion(0.250692, -0.015874, -0.717888, 0.64926)
bones/58/rotation = Quaternion(0.547427, 0.0727925, -0.343529, 0.759613)
bones/57/rotation = Quaternion(0.233181, -0.0107908, -0.678944, 0.696093)
bones/58/rotation = Quaternion(0.523886, 0.0664228, -0.405548, 0.746098)
bones/58/scale = Vector3(1, 1, 1)
bones/59/position = Vector3(-1.27016e-07, 0.288296, 1.25242e-08)
bones/59/rotation = Quaternion(0.462535, -0.0306456, -0.0826658, 0.882207)
bones/59/position = Vector3(-9.57874e-08, 0.28245, -2.04679e-08)
bones/59/rotation = Quaternion(0.472279, -0.000988259, -0.0133858, 0.881347)
bones/59/scale = Vector3(1, 1, 1)
bones/60/rotation = Quaternion(0.00106262, -0.238284, 0.000260704, 0.971195)
bones/60/rotation = Quaternion(0.00106223, -0.239893, 0.000262507, 0.970799)
bones/60/scale = Vector3(1, 1, 1)
bones/61/position = Vector3(-2.00553e-08, 0.0500378, -0.000109436)
bones/61/rotation = Quaternion(-0.306126, -0.34578, 0.111249, 0.87997)
bones/61/position = Vector3(-2.38435e-08, 0.0662428, -0.000144935)
bones/61/rotation = Quaternion(-0.259913, -0.30647, 0.0898474, 0.91129)
bones/61/scale = Vector3(1, 1, 1)
bones/62/rotation = Quaternion(0.493569, 0.84346, 0.0982726, -0.187901)
bones/63/rotation = Quaternion(0.52804, -0.147693, -0.0941254, 0.830964)
@@ -228,28 +228,28 @@ bones/93/rotation = Quaternion(-0.494209, 0.0204614, -0.0359497, 0.868359)
bones/93/scale = Vector3(1, 1.13164, 1)
bones/94/rotation = Quaternion(-0.547852, 0.057849, -0.0581314, 0.832546)
bones/94/scale = Vector3(1, 1.05697, 1)
bones/95/position = Vector3(-2.927e-08, 0.0500378, -0.000109433)
bones/95/rotation = Quaternion(-0.798584, -0.166404, -0.0860817, 0.571982)
bones/95/position = Vector3(3.32503e-09, 0.0662427, -0.000145026)
bones/95/rotation = Quaternion(-0.786701, -0.143093, -0.0788224, 0.595326)
bones/95/scale = Vector3(1, 1, 1)
bones/96/position = Vector3(-1.69053e-07, 0.288296, 2.26814e-08)
bones/96/rotation = Quaternion(-0.516871, 0.0189744, -0.0412999, 0.854856)
bones/96/scale = Vector3(1, 1.09431, 1)
bones/96/position = Vector3(1.37622e-09, 0.28245, -1.58384e-08)
bones/96/rotation = Quaternion(-0.513124, 0.00451907, -0.00526202, 0.858286)
bones/96/scale = Vector3(1, 1.0999, 1)
bones/97/position = Vector3(-0.00645471, 0.000163305, -0.00321278)
bones/97/rotation = Quaternion(0.248427, 0.0258538, -0.267814, 0.930533)
bones/97/scale = Vector3(1, 1, 1)
bones/98/position = Vector3(-5.76256e-09, 0.0159596, 0.000181361)
bones/98/rotation = Quaternion(-0.0586372, -0.00568235, -0.12181, 0.990804)
bones/99/rotation = Quaternion(-0.457054, 0.129616, -0.0928363, 0.875033)
bones/99/rotation = Quaternion(-0.463077, 0.151382, -0.119364, 0.865098)
bones/99/scale = Vector3(1, 1, 1)
bones/100/rotation = Quaternion(0.047975, -0.0290916, 0.496614, 0.866156)
bones/101/rotation = Quaternion(0.0735213, 0.453738, 0.707398, 0.536939)
bones/100/rotation = Quaternion(0.0487089, -0.0278453, 0.474124, 0.878669)
bones/101/rotation = Quaternion(0.0674087, 0.449171, 0.744007, 0.490056)
bones/102/position = Vector3(6.2732e-09, 0.281682, 9.00968e-08)
bones/102/rotation = Quaternion(0.0299112, 4.92746e-05, 5.11185e-05, 0.999553)
bones/102/rotation = Quaternion(0.0783999, 5.11893e-05, 4.85968e-05, 0.996922)
bones/102/scale = Vector3(1, 1, 1)
bones/103/rotation = Quaternion(0.00109412, 0.000158973, -1.86224e-07, 0.999999)
bones/103/scale = Vector3(0.999997, 0.999997, 1)
bones/104/position = Vector3(-1.97803e-07, 0.068466, -0.000150014)
bones/104/rotation = Quaternion(-0.438056, 0.000260938, -0.000173902, 0.898948)
bones/104/rotation = Quaternion(-0.390861, 0.000250205, -0.000179205, 0.92045)
bones/104/scale = Vector3(1, 1, 1)
bones/105/rotation = Quaternion(-0.272954, 0.938438, 0.146391, -0.152973)
bones/106/rotation = Quaternion(0.58496, 0.153924, 0.0835466, 0.791928)
@@ -295,96 +295,96 @@ bones/136/scale = Vector3(1, 1.25698, 1)
bones/137/rotation = Quaternion(-0.479239, -0.0566498, 0.0570499, 0.873994)
bones/137/scale = Vector3(1, 1.15486, 1)
bones/138/position = Vector3(-1.96072e-07, 0.068466, -0.000149977)
bones/138/rotation = Quaternion(-0.849258, 0.000157943, 3.23818e-05, 0.527979)
bones/138/rotation = Quaternion(-0.835281, 0.000155048, 2.64581e-05, 0.549823)
bones/138/scale = Vector3(1, 1, 1)
bones/139/position = Vector3(3.48513e-09, 0.281682, 1.40144e-07)
bones/139/rotation = Quaternion(-0.696011, 1.21396e-06, 6.09475e-05, 0.718031)
bones/139/rotation = Quaternion(-0.678372, 2.72611e-06, 6.07555e-05, 0.734718)
bones/139/scale = Vector3(1, 1, 1)
bones/140/position = Vector3(-0.00091601, -0.00419344, -0.00166352)
bones/140/rotation = Quaternion(0.180101, -0.00275761, 0.0409847, 0.98279)
bones/140/scale = Vector3(1.12362, 1, 1)
bones/141/position = Vector3(2.32831e-10, 0.0159594, 0.000181319)
bones/141/rotation = Quaternion(-0.0876969, -0.00686066, -0.0793036, 0.992962)
bones/142/rotation = Quaternion(-0.59306, -0.072254, 0.461617, 0.65572)
bones/142/rotation = Quaternion(-0.586048, -0.0904486, 0.482526, 0.64462)
bones/142/scale = Vector3(1, 1, 0.999999)
bones/143/position = Vector3(-0.0139807, 0.110044, 0.0701197)
bones/144/position = Vector3(-0.0111757, 0.0524648, 0.10961)
bones/145/position = Vector3(-0.0132329, -0.018423, 0.126834)
bones/146/position = Vector3(-0.00282269, 0.0438543, -0.144881)
bones/147/position = Vector3(0.119573, 0.0291284, -0.0793672)
bones/147/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/148/position = Vector3(0.108832, 0.0891115, -0.0550522)
bones/148/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/149/position = Vector3(0.0832047, 0.066736, 0.0430919)
bones/149/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/150/position = Vector3(0.10844, -0.00998876, 0.0247553)
bones/150/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/151/position = Vector3(0.045835, 0.058439, 0.0867506)
bones/152/position = Vector3(0.0509334, -0.0151493, 0.0894968)
bones/153/position = Vector3(0.0363082, 0.109653, 0.0524593)
bones/153/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/154/position = Vector3(0.0626361, 0.13099, 0.0390041)
bones/154/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/155/position = Vector3(0.0770166, 0.154954, 0.00866816)
bones/155/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/156/position = Vector3(0.0852847, 0.157581, -0.0178354)
bones/156/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/157/position = Vector3(0.102407, 0.121445, -0.0463067)
bones/157/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/158/position = Vector3(0.0609227, 0.12881, -0.067941)
bones/158/rotation = Quaternion(0.133316, -0.19788, -0.0047292, 0.971107)
bones/159/position = Vector3(-0.125687, 0.0555322, -0.0820334)
bones/159/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/160/position = Vector3(-0.0944835, 0.113247, -0.0781763)
bones/160/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/161/position = Vector3(-0.10545, 0.126761, 0.0306197)
bones/161/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/162/position = Vector3(-0.134348, 0.0646965, 0.0125657)
bones/162/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/163/position = Vector3(-0.0629909, 0.0764249, 0.0976013)
bones/164/position = Vector3(-0.0844746, 0.0059698, 0.111779)
bones/165/position = Vector3(-0.0530007, 0.145973, 0.0543718)
bones/165/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/166/position = Vector3(-0.0644365, 0.182007, 0.0201099)
bones/166/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/167/position = Vector3(-0.0573856, 0.196716, -0.0180385)
bones/167/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/168/position = Vector3(-0.0587486, 0.193374, -0.0456911)
bones/168/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/169/position = Vector3(-0.0900045, 0.163528, -0.0639474)
bones/169/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/170/position = Vector3(-0.0565296, 0.14743, -0.0745644)
bones/170/rotation = Quaternion(0.0316156, 0.0247255, -0.308898, 0.950248)
bones/171/rotation = Quaternion(0.766041, 0.164396, -0.409579, 0.467333)
bones/143/position = Vector3(-0.018919, 0.110134, 0.070157)
bones/144/position = Vector3(-0.0337827, 0.0542148, 0.09068)
bones/145/position = Vector3(-0.0510229, -0.00555351, 0.0822772)
bones/146/position = Vector3(0.0286733, 0.0509892, -0.115724)
bones/147/position = Vector3(0.108819, 0.0395299, -0.0447654)
bones/147/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/148/position = Vector3(0.112299, 0.0939505, -0.0357108)
bones/148/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/149/position = Vector3(0.0759571, 0.078725, 0.0577895)
bones/149/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/150/position = Vector3(0.0778319, 0.000744706, 0.0574671)
bones/150/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/151/position = Vector3(0.018874, 0.0587846, 0.0816846)
bones/152/position = Vector3(0.0156536, -0.00930089, 0.0820753)
bones/153/position = Vector3(0.033201, 0.11429, 0.0545836)
bones/153/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/154/position = Vector3(0.0637267, 0.139331, 0.0384155)
bones/154/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/155/position = Vector3(0.0747889, 0.163579, 0.00693478)
bones/155/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/156/position = Vector3(0.0823833, 0.166088, -0.019781)
bones/156/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/157/position = Vector3(0.106001, 0.131009, -0.0435183)
bones/157/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/158/position = Vector3(0.0700479, 0.132857, -0.0632079)
bones/158/rotation = Quaternion(0.125368, -0.182936, 0.0565113, 0.97346)
bones/159/position = Vector3(-0.0889399, 0.0627121, -0.100726)
bones/159/rotation = Quaternion(0.0314139, 0.0266726, -0.333223, 0.941947)
bones/160/position = Vector3(-0.0729533, 0.106545, -0.0883844)
bones/160/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/161/position = Vector3(-0.105049, 0.136257, 0.00595959)
bones/161/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/162/position = Vector3(-0.123492, 0.0687571, -0.0301436)
bones/162/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/163/position = Vector3(-0.0777084, 0.0784455, 0.0660743)
bones/164/position = Vector3(-0.0991848, 0.0200588, 0.0579003)
bones/165/position = Vector3(-0.0571452, 0.150272, 0.0521332)
bones/165/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/166/position = Vector3(-0.062244, 0.184127, 0.0201765)
bones/166/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/167/position = Vector3(-0.0545475, 0.198521, -0.0178273)
bones/167/rotation = Quaternion(0.0314139, 0.0266726, -0.333223, 0.941947)
bones/168/position = Vector3(-0.056203, 0.195251, -0.0454726)
bones/168/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/169/position = Vector3(-0.0888787, 0.166864, -0.0635684)
bones/169/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/170/position = Vector3(-0.0563384, 0.148642, -0.0744274)
bones/170/rotation = Quaternion(0.0314138, 0.0266726, -0.333223, 0.941947)
bones/171/rotation = Quaternion(0.721273, 0.227673, -0.441375, 0.482823)
bones/171/scale = Vector3(0.999998, 0.999997, 1.00001)
bones/172/position = Vector3(3.62338e-10, 0.531431, 3.56619e-08)
bones/172/rotation = Quaternion(0.280398, -1.74173e-06, -3.57947e-07, 0.959884)
bones/172/rotation = Quaternion(0.231705, -3.96115e-06, -6.79493e-07, 0.972786)
bones/172/scale = Vector3(1, 0.999998, 1.00001)
bones/173/position = Vector3(6.48577e-09, 0.418112, 8.79831e-08)
bones/173/rotation = Quaternion(-0.381537, -0.0195898, 0.0489257, 0.92285)
bones/173/rotation = Quaternion(-0.351933, -0.0233418, 0.0533289, 0.934213)
bones/173/scale = Vector3(1, 0.999992, 0.999996)
bones/174/rotation = Quaternion(-0.388439, -1.7287e-07, -1.04265e-07, 0.921475)
bones/175/position = Vector3(1.16517e-08, 0.418112, 8.45817e-08)
bones/175/rotation = Quaternion(-0.736764, -0.0129823, 0.0131286, 0.675898)
bones/175/rotation = Quaternion(-0.729188, -0.014804, 0.0140502, 0.684009)
bones/175/scale = Vector3(1, 1, 1)
bones/176/position = Vector3(1.15382e-08, 0.531431, 3.0748e-08)
bones/176/rotation = Quaternion(-0.637828, -5.03305e-07, -9.37431e-07, 0.770179)
bones/176/scale = Vector3(1, 1.0141, 1)
bones/177/rotation = Quaternion(0.941816, -0.00336278, -0.0741776, 0.327825)
bones/176/rotation = Quaternion(-0.657024, -1.13106e-06, -1.88299e-06, 0.75387)
bones/176/scale = Vector3(1, 1.00727, 1)
bones/177/rotation = Quaternion(0.932579, 0.0765598, -0.123127, 0.330569)
bones/177/scale = Vector3(1, 0.999998, 1.00001)
bones/178/position = Vector3(2.73163e-08, 0.531431, 1.20327e-09)
bones/178/rotation = Quaternion(0.319624, -2.78976e-06, -7.26061e-07, 0.947545)
bones/178/rotation = Quaternion(0.236746, -6.00452e-07, -1.17628e-07, 0.971572)
bones/178/scale = Vector3(1, 0.999999, 1.00001)
bones/179/position = Vector3(8.4155e-09, 0.418112, 3.97981e-07)
bones/179/rotation = Quaternion(-0.42193, 1.36197e-05, -0.103163, 0.90074)
bones/179/rotation = Quaternion(-0.314248, 0.00136942, -0.0970126, 0.94437)
bones/179/scale = Vector3(1, 0.99999, 0.999998)
bones/180/rotation = Quaternion(-0.560426, 1.52972e-07, 1.60613e-07, 0.828205)
bones/180/rotation = Quaternion(-0.606948, 1.50119e-07, 1.78005e-07, 0.794742)
bones/181/position = Vector3(2.69973e-08, 0.418112, 4.26027e-07)
bones/181/rotation = Quaternion(-0.747195, 0.0140527, -0.0333235, 0.66362)
bones/181/rotation = Quaternion(-0.71957, 0.0136836, -0.0312211, 0.693583)
bones/181/scale = Vector3(1, 1, 1)
bones/182/position = Vector3(1.89344e-08, 0.531431, -1.32203e-08)
bones/182/rotation = Quaternion(-0.621858, -6.37104e-07, -1.12013e-06, 0.78313)
bones/182/scale = Vector3(1, 1.0221, 1)
bones/182/rotation = Quaternion(-0.655067, -1.27296e-07, -5.17688e-08, 0.755571)
bones/182/scale = Vector3(1, 1.00784, 1)
[node name="BoneFlipper" type="SkeletonModifier3D" parent="Model/Armature/Skeleton3D" index="0"]
_import_path = NodePath("")

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=14 format=3 uid="uid://cejn8wfgw14xs"]
[gd_scene load_steps=15 format=3 uid="uid://cejn8wfgw14xs"]
[ext_resource type="Script" uid="uid://bbd22tc1scoom" path="res://scripts/projectiles/projectile.gd" id="1_kv6x5"]
[ext_resource type="Material" uid="uid://cux40v5s5sok3" path="res://resources/materials/debug/debug_projectile.tres" id="2_b024o"]
[ext_resource type="PackedScene" uid="uid://c8gqrealje3o" path="res://scenes/effects/shadow_decal.tscn" id="3_2dqcj"]
[ext_resource type="PackedScene" uid="uid://jmtp1qxxnyr2" path="res://scenes/projectiles/projectile_hit_particles.tscn" id="3_a8d2p"]
[ext_resource type="PackedScene" uid="uid://bl3flu6un3op1" path="res://assets/models/projectiles/projectile.glb" id="3_oc4rm"]
[ext_resource type="Material" uid="uid://dnyl326cg2rvh" path="res://resources/materials/projectiles/projectile_mat.tres" id="4_u2n0m"]
[ext_resource type="Material" uid="uid://d3f5sarakjtlg" path="res://resources/materials/projectiles/projectile_glow_mat.tres" id="5_fdcqu"]
@@ -24,6 +25,7 @@ curve = SubResource("Curve_j3t3l")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_fdcqu"]
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveTexture_a8d2p")
color = Color(0.964706, 0.788235, 0.215686, 0.109804)
[sub_resource type="QuadMesh" id="QuadMesh_fdcqu"]
material = ExtResource("7_j3t3l")
@@ -35,6 +37,7 @@ collision_layer = 32
collision_mask = 49
script = ExtResource("1_kv6x5")
_collision_debug_material = ExtResource("2_b024o")
_hit_particles_scene = ExtResource("3_a8d2p")
[node name="Model" parent="." instance=ExtResource("3_oc4rm")]
@@ -57,6 +60,7 @@ debug_color = Color(0, 0.6, 0.7, 0.42)
[node name="ShadowDecal" parent="." instance=ExtResource("3_2dqcj")]
[node name="TrailParticles" type="GPUParticles3D" parent="."]
layers = 64
extra_cull_margin = 100.0
amount = 5
lifetime = 0.4

View File

@@ -0,0 +1,143 @@
[gd_scene load_steps=25 format=3 uid="uid://jmtp1qxxnyr2"]
[ext_resource type="Material" uid="uid://pjyvs328ew3u" path="res://resources/materials/projectiles/projectile_hit_effect_mat.tres" id="1_yxwtk"]
[ext_resource type="Material" uid="uid://sn3w7fpf2k0b" path="res://resources/materials/projectiles/projectile_hit_effect_sub_mat.tres" id="2_3ys0p"]
[ext_resource type="Script" uid="uid://x3uft3uwakct" path="res://scripts/effects/particles_3d_self_destructing.gd" id="2_7o5ux"]
[ext_resource type="Material" uid="uid://btoktsgqj62ei" path="res://resources/materials/projectiles/projectile_trail_mat.tres" id="4_7o5ux"]
[sub_resource type="Gradient" id="Gradient_3ys0p"]
offsets = PackedFloat32Array(0, 0.684211)
colors = PackedColorArray(1, 1, 1, 1, 0.964706, 0.788235, 0.215686, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_7o5ux"]
gradient = SubResource("Gradient_3ys0p")
[sub_resource type="Curve" id="Curve_wq63x"]
_data = [Vector2(0.00425532, 0.662921), 0.0, 1.13162, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_7kxpu"]
curve = SubResource("Curve_wq63x")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_j3t3l"]
angle_min = 1.07288e-05
angle_max = 360.0
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveTexture_7kxpu")
color_ramp = SubResource("GradientTexture1D_7o5ux")
anim_speed_min = 1.0
anim_speed_max = 1.0
[sub_resource type="PlaneMesh" id="PlaneMesh_a8d2p"]
material = ExtResource("1_yxwtk")
size = Vector2(1, 1)
orientation = 2
[sub_resource type="Curve" id="Curve_mp3hp"]
_data = [Vector2(0, 1), 0.0, -1.98034, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_eeh78"]
curve = SubResource("Curve_mp3hp")
[sub_resource type="Gradient" id="Gradient_ab42x"]
offsets = PackedFloat32Array(0, 0.578947)
colors = PackedColorArray(1, 1, 1, 1, 0.964706, 0.788235, 0.215686, 1)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_5y8lm"]
gradient = SubResource("Gradient_ab42x")
[sub_resource type="Curve" id="Curve_7kxpu"]
_limits = [0.0, 2.55, 0.0, 1.0]
_data = [Vector2(0, 0.85955), 0.0, 0.177188, 0, 0, Vector2(1, 0.573034), 1.94907, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_vgwnf"]
_limits = [0.0, 1.9, 0.0, 1.0]
_data = [Vector2(0, 0), 0.0, 7.77612, 0, 0, Vector2(1, 1.70787), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Curve" id="Curve_kaa5c"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveXYZTexture" id="CurveXYZTexture_mp3hp"]
curve_x = SubResource("Curve_7kxpu")
curve_y = SubResource("Curve_vgwnf")
curve_z = SubResource("Curve_kaa5c")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_a8d2p"]
angle_min = 1.07288e-05
angle_max = 360.0
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveXYZTexture_mp3hp")
color_ramp = SubResource("GradientTexture1D_5y8lm")
alpha_curve = SubResource("CurveTexture_eeh78")
sub_emitter_mode = 4
sub_emitter_amount_at_start = 1
[sub_resource type="PlaneMesh" id="PlaneMesh_wq63x"]
material = ExtResource("2_3ys0p")
size = Vector2(0.35, 2)
orientation = 2
[sub_resource type="Curve" id="Curve_7o5ux"]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.99999, 0), -3.0367, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_ab42x"]
curve = SubResource("Curve_7o5ux")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_3ys0p"]
emission_shape = 1
emission_sphere_radius = 0.5
direction = Vector3(0, 0, -1)
spread = 0.0
initial_velocity_min = 10.0
initial_velocity_max = 20.0
gravity = Vector3(0, 0, 0)
damping_min = 20.0
damping_max = 40.0
scale_curve = SubResource("CurveTexture_ab42x")
color = Color(0.96, 0.78528, 0.2112, 1)
[sub_resource type="QuadMesh" id="QuadMesh_7o5ux"]
material = ExtResource("4_7o5ux")
size = Vector2(0.3, 0.3)
orientation = 1
[node name="HitParticles" type="GPUParticles3D"]
layers = 64
emitting = false
amount = 1
lifetime = 0.5
one_shot = true
fixed_fps = 15
interpolate = false
process_material = SubResource("ParticleProcessMaterial_j3t3l")
draw_pass_1 = SubResource("PlaneMesh_a8d2p")
script = ExtResource("2_7o5ux")
[node name="HitParticlesSub" type="GPUParticles3D" parent="."]
layers = 64
emitting = false
amount = 2
lifetime = 0.4
one_shot = true
explosiveness = 1.0
fixed_fps = 15
interpolate = false
process_material = SubResource("ParticleProcessMaterial_a8d2p")
draw_pass_1 = SubResource("PlaneMesh_wq63x")
[node name="HitParticlesDir" type="GPUParticles3D" parent="."]
layers = 64
emitting = false
amount = 4
lifetime = 0.5
one_shot = true
explosiveness = 1.0
fixed_fps = 15
interpolate = false
process_material = SubResource("ParticleProcessMaterial_3ys0p")
draw_pass_1 = SubResource("QuadMesh_7o5ux")

View File

@@ -0,0 +1,18 @@
class_name Particles3DSelfDestructing extends GPUParticles3D
func _ready() -> void:
emitting = true
for node in get_children():
if node is GPUParticles3D:
(node as GPUParticles3D).emitting = true
finished.connect(_on_finished)
func init(start_position: Vector3, direction: Vector3 = Vector3.ZERO) -> void:
global_position = start_position
look_at(global_position + direction)
func _on_finished() -> void:
queue_free()

View File

@@ -0,0 +1 @@
uid://x3uft3uwakct

View File

@@ -134,7 +134,7 @@ func _hit_projectile(projectile: Projectile) -> void:
projectile.global_position,
projectile.global_position + new_direction
)
projectile.set_velocity(new_direction * _hit_projectile_speed)
projectile.hit(new_direction * _hit_projectile_speed)
break
prev_dir_angle = dir_angle

View File

@@ -7,6 +7,7 @@ const MAX_STRETCH: float = 0.75
@export var _speed_stretch_factor: float = 100
@export var _collision_debug_material: Material
@export var _hit_particles_scene: PackedScene
var _start_position: Vector3
var _velocity: Vector3
@@ -52,6 +53,15 @@ func init(velocity: Vector3, start_position: Vector3, lifetime: float = 10) -> v
_lifetime = lifetime
func hit(velocity: Vector3) -> void:
var hit_particles := (
_hit_particles_scene.instantiate() as Particles3DSelfDestructing
)
get_tree().get_root().add_child(hit_particles)
hit_particles.init(global_position, velocity)
set_velocity(velocity)
func set_velocity(velocity: Vector3) -> void:
_velocity = velocity
_life_timer = _lifetime