From 538c96f5e37f7da4f87f0f653ea2b434050d5078 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Tue, 19 Aug 2025 17:21:42 -0600 Subject: [PATCH] Added ping vfx to listener node --- asset_dev/particles/ping.xcf | Bin 0 -> 31843 bytes assets/particles/ping.png | 3 + assets/particles/ping.png.import | 34 +++ src/world/mechanics/listener/listener.tscn | 319 ++++++++++++++++++++- 4 files changed, 355 insertions(+), 1 deletion(-) create mode 100644 asset_dev/particles/ping.xcf create mode 100644 assets/particles/ping.png create mode 100644 assets/particles/ping.png.import diff --git a/asset_dev/particles/ping.xcf b/asset_dev/particles/ping.xcf new file mode 100644 index 0000000000000000000000000000000000000000..2f5a87fa12a97e329efa8688bbbf4d84263d4816 GIT binary patch literal 31843 zcmeI53vgD|+3$BQBmok@m;hpgHxLK}Ny0TDAu*94#eTsrDrj0oBDs(&0g|s2wdqhI zwdx$8N08e=W&k~M8HRzviIQLyR3L)RaFH{DfCW#mRl(sJ-gSQez4wc6s8*}?n{)ic z+57jbwRYZpTkF}+dY-kGC8d?so>^0hJ^ztBc(7$zf$jz@YZ2Q`Yyko6Ze|M`O_nzP zMX?35wPWk*$~rFEvO@j>BTD$`K~ttxRu)y&khWA9IeJD>K}}Ji=U1gQQ$1tH<^H=$ zy4Z)7Ru+^L4Jw&YTBtmZ4!EWN%$i?U6nSP&t0*lT(4l{E$&_go(`Iz=@UOoudV1d* zKQ{i(_-s#c#k7K&-k!lDJiQ-E{s;dJNltz!C8f6~c>q87=s)p;&L7&p{EtNUmuJna zE|^kURpJ?(%z1v@Cgmmu)mD|(cuK3LOf8zpF|(!>7tbuJ;leoHPj&N!L=(Ib;qpA3eSHO&6rs_ttumaaAI=2r>JVmv_dW^BYwjDcMVF7zaz85 zDBmAu@=Qn76qISewA#ddR5u>@*Z;V4tnbz2@N{cRXBQRzbI-T!k9@axJ$)MyBY01f7 z`y6ll1HWtkC;#%x3%>CWRqfR*i#*jcii%5TW%RDrvzPoh_qCC4zPeeJ z|LD4A6;yw#E8_Gzan&_b60@tTD@vyn zs7Vg_`$sz{Id#zBkzZB0{{D|u9k0KauY4J!lD^cKQnr5oLha9%Wlikvm+6YvzpDBM zhWuN>uZw1=B!o?$P{S50`HtVR=QGQud>!4}m4OxGCwK6ZJ$`b6pWM+;4)>EI{N&Ea zI-l=fD1y$dbMi)a_H>5jkbTT_MI_$XIVfaah5qG)#lf%yLeRclCO}9F{=~ai(4KDY%JnFK=I=N+;dVz21TDeGhc+XP|pO1K)9u8+gp+-&}ef z%0A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 literal 0 HcmV?d00001 diff --git a/assets/particles/ping.png b/assets/particles/ping.png new file mode 100644 index 0000000..d130626 --- /dev/null +++ b/assets/particles/ping.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e443f69bb0c0e2858084265b365cbd3c5560475da308097985977a33c1c760f0 +size 9293 diff --git a/assets/particles/ping.png.import b/assets/particles/ping.png.import new file mode 100644 index 0000000..00281b8 --- /dev/null +++ b/assets/particles/ping.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c31gdstf55x5" +path="res://.godot/imported/ping.png-3bee3a97289e15f7bb2e56fe64150330.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/particles/ping.png" +dest_files=["res://.godot/imported/ping.png-3bee3a97289e15f7bb2e56fe64150330.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +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 diff --git a/src/world/mechanics/listener/listener.tscn b/src/world/mechanics/listener/listener.tscn index 221378f..7e2553b 100644 --- a/src/world/mechanics/listener/listener.tscn +++ b/src/world/mechanics/listener/listener.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=9 format=3 uid="uid://kctp5erogwcb"] +[gd_scene load_steps=19 format=3 uid="uid://kctp5erogwcb"] [ext_resource type="Script" uid="uid://bde7cglaqobkd" path="res://src/world/mechanics/listener/listener.gd" id="1_htscg"] [ext_resource type="Script" uid="uid://cfsiyhhrcua6o" path="res://src/world/game_sound/game_sound_listener.gd" id="2_htscg"] +[ext_resource type="Texture2D" uid="uid://c31gdstf55x5" path="res://assets/particles/ping.png" id="3_2ibh1"] [sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_2ibh1"] data = PackedVector3Array(0, 0.05, 0.25, 0.0957, 0.05, 0.231, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.0765, -0.05, 0.1848, 0, -0.05, 0.2, 0.0957, 0.05, 0.231, 0.1768, 0.05, 0.1768, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.1414, -0.05, 0.1414, 0.0765, -0.05, 0.1848, 0.1768, 0.05, 0.1768, 0.231, 0.05, 0.0957, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.1848, -0.05, 0.0765, 0.1414, -0.05, 0.1414, 0.231, 0.05, 0.0957, 0.25, 0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, 0.0765, 0.25, 0.05, 0, 0.231, 0.05, -0.0957, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1848, -0.05, -0.0765, 0.2, -0.05, 0, 0.231, 0.05, -0.0957, 0.1768, 0.05, -0.1768, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.1414, -0.05, -0.1414, 0.1848, -0.05, -0.0765, 0.1768, 0.05, -0.1768, 0.0957, 0.05, -0.231, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0.0765, -0.05, -0.1848, 0.1414, -0.05, -0.1414, 0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, 0, -0.05, -0.2, 0.0765, -0.05, -0.1848, 0, 0.05, -0.25, -0.0957, 0.05, -0.231, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.0765, -0.05, -0.1848, 0, -0.05, -0.2, -0.0957, 0.05, -0.231, -0.1768, 0.05, -0.1768, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.1414, -0.05, -0.1414, -0.0765, -0.05, -0.1848, -0.1768, 0.05, -0.1768, -0.231, 0.05, -0.0957, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.1848, -0.05, -0.0765, -0.1414, -0.05, -0.1414, -0.231, 0.05, -0.0957, -0.25, 0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, -0.0765, -0.25, 0.05, 0, -0.231, 0.05, 0.0957, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1848, -0.05, 0.0765, -0.2, -0.05, 0, -0.231, 0.05, 0.0957, -0.1768, 0.05, 0.1768, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.1414, -0.05, 0.1414, -0.1848, -0.05, 0.0765, -0.1768, 0.05, 0.1768, -0.0957, 0.05, 0.231, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, -0.0765, -0.05, 0.1848, -0.1414, -0.05, 0.1414, -0.0957, 0.05, 0.231, 0, 0.05, 0.25, -0.0765, -0.05, 0.1848, 0, 0.05, 0.25, 0, -0.05, 0.2, -0.0765, -0.05, 0.1848, 0, 0.05, 0, 0.0957, 0.05, 0.231, 0, 0.05, 0.25, 0, 0.05, 0, 0.1768, 0.05, 0.1768, 0.0957, 0.05, 0.231, 0, 0.05, 0, 0.231, 0.05, 0.0957, 0.1768, 0.05, 0.1768, 0, 0.05, 0, 0.25, 0.05, 0, 0.231, 0.05, 0.0957, 0, 0.05, 0, 0.231, 0.05, -0.0957, 0.25, 0.05, 0, 0, 0.05, 0, 0.1768, 0.05, -0.1768, 0.231, 0.05, -0.0957, 0, 0.05, 0, 0.0957, 0.05, -0.231, 0.1768, 0.05, -0.1768, 0, 0.05, 0, 0, 0.05, -0.25, 0.0957, 0.05, -0.231, 0, 0.05, 0, -0.0957, 0.05, -0.231, 0, 0.05, -0.25, 0, 0.05, 0, -0.1768, 0.05, -0.1768, -0.0957, 0.05, -0.231, 0, 0.05, 0, -0.231, 0.05, -0.0957, -0.1768, 0.05, -0.1768, 0, 0.05, 0, -0.25, 0.05, 0, -0.231, 0.05, -0.0957, 0, 0.05, 0, -0.231, 0.05, 0.0957, -0.25, 0.05, 0, 0, 0.05, 0, -0.1768, 0.05, 0.1768, -0.231, 0.05, 0.0957, 0, 0.05, 0, -0.0957, 0.05, 0.231, -0.1768, 0.05, 0.1768, 0, 0.05, 0, 0, 0.05, 0.25, -0.0957, 0.05, 0.231, 0, -0.05, 0, 0, -0.05, 0.2, 0.0765, -0.05, 0.1848, 0, -0.05, 0, 0.0765, -0.05, 0.1848, 0.1414, -0.05, 0.1414, 0, -0.05, 0, 0.1414, -0.05, 0.1414, 0.1848, -0.05, 0.0765, 0, -0.05, 0, 0.1848, -0.05, 0.0765, 0.2, -0.05, 0, 0, -0.05, 0, 0.2, -0.05, 0, 0.1848, -0.05, -0.0765, 0, -0.05, 0, 0.1848, -0.05, -0.0765, 0.1414, -0.05, -0.1414, 0, -0.05, 0, 0.1414, -0.05, -0.1414, 0.0765, -0.05, -0.1848, 0, -0.05, 0, 0.0765, -0.05, -0.1848, 0, -0.05, -0.2, 0, -0.05, 0, 0, -0.05, -0.2, -0.0765, -0.05, -0.1848, 0, -0.05, 0, -0.0765, -0.05, -0.1848, -0.1414, -0.05, -0.1414, 0, -0.05, 0, -0.1414, -0.05, -0.1414, -0.1848, -0.05, -0.0765, 0, -0.05, 0, -0.1848, -0.05, -0.0765, -0.2, -0.05, 0, 0, -0.05, 0, -0.2, -0.05, 0, -0.1848, -0.05, 0.0765, 0, -0.05, 0, -0.1848, -0.05, 0.0765, -0.1414, -0.05, 0.1414, 0, -0.05, 0, -0.1414, -0.05, 0.1414, -0.0765, -0.05, 0.1848, 0, -0.05, 0, -0.0765, -0.05, 0.1848, 0, -0.05, 0.2) @@ -46,6 +47,20 @@ tracks/0/keys = { "update": 0, "values": [Vector3(1, 1, 1), Vector3(1.779, 1.779, 1.779), Vector3(0.528, 0.528, 0.528), Vector3(1.287, 1.287, 1.287), Vector3(0.826, 0.826, 0.826), Vector3(1.105, 1.105, 1.105), Vector3(0.936, 0.936, 0.936), Vector3(1.039, 1.039, 1.039), Vector3(0.976, 0.976, 0.976), Vector3(1.014, 1.014, 1.014), Vector3(0.991, 0.991, 0.991), Vector3(1, 1, 1)] } +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("PingEffect/PingAnimation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [&"ping", -1, 1.0, false], +"method": &"play" +}] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_2ibh1"] _data = { @@ -53,6 +68,280 @@ _data = { &"trigger": SubResource("Animation_htscg") } +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2ibh1"] +transparency = 3 +alpha_hash_scale = 1.0 +alpha_antialiasing_mode = 0 +no_depth_test = true +shading_mode = 0 +albedo_color = Color(0.866667, 0.109804, 0.101961, 1) +albedo_texture = ExtResource("3_2ibh1") +disable_receive_shadows = true +billboard_mode = 1 +billboard_keep_scale = true + +[sub_resource type="QuadMesh" id="QuadMesh_r42ft"] +material = SubResource("StandardMaterial3D_2ibh1") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dqq13"] +transparency = 3 +alpha_hash_scale = 1.0 +alpha_antialiasing_mode = 0 +no_depth_test = true +shading_mode = 0 +albedo_color = Color(0.866667, 0.109804, 0.101961, 1) +albedo_texture = ExtResource("3_2ibh1") +disable_receive_shadows = true +billboard_mode = 1 +billboard_keep_scale = true + +[sub_resource type="QuadMesh" id="QuadMesh_gjouv"] +material = SubResource("StandardMaterial3D_dqq13") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pp7wn"] +transparency = 3 +alpha_hash_scale = 1.0 +alpha_antialiasing_mode = 0 +no_depth_test = true +shading_mode = 0 +albedo_color = Color(0.866667, 0.109804, 0.101961, 1) +albedo_texture = ExtResource("3_2ibh1") +disable_receive_shadows = true +billboard_mode = 1 +billboard_keep_scale = true + +[sub_resource type="QuadMesh" id="QuadMesh_c5snp"] +material = SubResource("StandardMaterial3D_pp7wn") + +[sub_resource type="Animation" id="Animation_r42ft"] +resource_name = "ping" +length = 4.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Ping1:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Ping1:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 3.4), +"transitions": PackedFloat32Array(0.2, 1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001), Vector3(3, 3, 3)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Ping1:mesh:material:albedo_color") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.3, 1.4), +"transitions": PackedFloat32Array(1.618, 0.618, 1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1), Color(0.866667, 0.109804, 0.101961, 1), Color(0.66, 0.08888, 0.0792, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Ping2:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.3), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Ping2:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.3, 3.7), +"transitions": PackedFloat32Array(1, 0.2, 1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001), Vector3(0.001, 0.001, 0.001), Vector3(3, 3, 3)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Ping2:mesh:material:albedo_color") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.6, 1.7), +"transitions": PackedFloat32Array(1, 0.618, 1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1), Color(0.866667, 0.109804, 0.101961, 1), Color(0.66, 0.08888, 0.0792, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Ping3:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.6), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Ping3:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.6, 4), +"transitions": PackedFloat32Array(1, 0.2, 1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001), Vector3(0.001, 0.001, 0.001), Vector3(3, 3, 3)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Ping3:mesh:material:albedo_color") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.9, 2), +"transitions": PackedFloat32Array(1, 0.618, 1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1), Color(0.866667, 0.109804, 0.101961, 1), Color(0.66, 0.08888, 0.0792, 0)] +} + +[sub_resource type="Animation" id="Animation_dqq13"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Ping1:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Ping1:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Ping1:mesh:material:albedo_color") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Ping2:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Ping2:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Ping2:mesh:material:albedo_color") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Ping3:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Ping3:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.001, 0.001, 0.001)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Ping3:mesh:material:albedo_color") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(0.866667, 0.109804, 0.101961, 1)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_dqq13"] +_data = { +&"RESET": SubResource("Animation_dqq13"), +&"ping": SubResource("Animation_r42ft") +} + [node name="Listener" type="StaticBody3D" groups=["Persistent"]] collision_layer = 36 collision_mask = 0 @@ -97,4 +386,32 @@ libraries = { &"": SubResource("AnimationLibrary_2ibh1") } +[node name="PingEffect" type="Node3D" parent="."] + +[node name="Ping1" type="MeshInstance3D" parent="PingEffect"] +transform = Transform3D(0.001, 0, 0, 0, 0.001, 0, 0, 0, 0.001, 0, 0, 0) +visible = false +sorting_offset = 9999.0 +mesh = SubResource("QuadMesh_r42ft") +skeleton = NodePath("../..") + +[node name="Ping2" type="MeshInstance3D" parent="PingEffect"] +transform = Transform3D(0.001, 0, 0, 0, 0.001, 0, 0, 0, 0.001, 0, 0, 0) +visible = false +sorting_offset = 9999.0 +mesh = SubResource("QuadMesh_gjouv") +skeleton = NodePath("../..") + +[node name="Ping3" type="MeshInstance3D" parent="PingEffect"] +transform = Transform3D(0.001, 0, 0, 0, 0.001, 0, 0, 0, 0.001, 0, 0, 0) +visible = false +sorting_offset = 9999.0 +mesh = SubResource("QuadMesh_c5snp") +skeleton = NodePath("../..") + +[node name="PingAnimation" type="AnimationPlayer" parent="PingEffect"] +libraries = { +&"": SubResource("AnimationLibrary_dqq13") +} + [connection signal="sound_detected" from="CollisionShape3D/GameSoundListener" to="." method="trigger" unbinds=1]