From 8212e4404460743e63c4358650ef609a90ffe504 Mon Sep 17 00:00:00 2001 From: Hazel Snider Date: Mon, 16 Jan 2023 07:29:53 -0500 Subject: [PATCH] arrow dust particles UwU --- graphics/particles/dust.png | Bin 0 -> 5018 bytes graphics/particles/dust.png.import | 35 ++++++++++++++++++++++++ objects/player/arrow_projectile.gd | 9 +++++++ objects/player/arrow_projectile.tscn | 39 ++++++++++++++++++++++++++- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 graphics/particles/dust.png create mode 100644 graphics/particles/dust.png.import diff --git a/graphics/particles/dust.png b/graphics/particles/dust.png new file mode 100644 index 0000000000000000000000000000000000000000..2b421f16db59052aac7906f5e71ce8dff37431f3 GIT binary patch literal 5018 zcmeHLdsGu=77wz52CAT_MNo%8tGGMKOy{SX2~~gdVXwZ8Y&&$lW>Lm8B) zQE)ErvT0#IRXWSFWHjFRTVKfeIUn8c!^P@!s@!GN&l|OioVIx1%BuglIoXRYZ@YGR z;o^BSUv(@=F=+>e(#xXsw#uCp>&V4!s01Cr8*|} zN$BZ@n{kTTG_Qx{R}A%Eru9scZJlJSyLGjG;re>>lZoqGgqy1}s)RqAT7C#gv8x=F z5V^Ia(fwXSeQPY=Gt|TR(0sPLH+rDy--SgxN;=CkQyC5q^F8?u-;q1Zlp}-BdC0=r zm&Oz+1C_0kyJvC&^Y{9Yg$K4t66!}!i;4eK!Hs>VqUncF1kdE2$(=T~_Ym5(ckAln zsg)y`Q#X%s+Y<2H1+n-3E?W6?Za40?WM#D7%8a4~r8SA!|5@x7{(Wn%yuA8C(EY{X zrLbd|>-)<-_Oi1VY_QM++_rnWjynj=u$N@Fjc}-6rlWl`&*x)L%29rwozDrb6R zEi$z@(4+0^kvVO3W6xK={oaUMuEn3Q-TH4f&J>?pSy|(LO4dnlrrmKA=Qv<-7qoS! zT57JT&Kvwc6OK>rIlG&qaY$xy9&Y|hQ(W=O<^x}pR=p)tmK6Njozc>`<6KAIBJvs0 zedxDn&pu_p@4Og&Z{Agzug9s&*h0gVL#h1E$Q!~_&UsZ8{qMyRj{Rb$DY3`)>6v z+nLqU-gRuP^foUo{z|xEJGZA-p1u5+zUM1KuJ_^BMbHgq{fg!f&h0KxKchJ;8KvL3 zryz|+v&$lbf+FNWK`(YI*rR#r8>L~j5pG%Gk^7Z@r>D3i)koytD=b`BK@U0LvNUV{ zl(|cuI4UORx=oVRRNTDTth!Y5^@3=}=s=g>?2?j`l+?y?U32KLs;b*Et>c=>(&Zm; zVC!}w`D>cutEMOhlPEi^x;eq$8CvcBprMh|?&G^=U0-tewJ7rkyDn9BHUAW8nrOeA zk+jymNO3aIuZr}@d$^{yc*fznj=HvY7jJm9@$Tp6^m$H9CqHgtQDko&sw%y3cDBdS z!h^2iuCge_m&?7{N*hwMkIp|*)-HYQ6eLc^x8E%f-B8Wg0tK$hoH=_&ZRn_@7&%$}{n%%Yr!@(;r%yk*FT%4kBPnnF2hhKqcuUvyrr#6g zjIVy~9D4^|v42csM(&aXa-(;_3XfyQbY#O+L#4g5)V<92MDFe_8=CFAG!GOD;<_h} zI+AKi*wyyHF07?ES6E%+h0HIw*Ego?KDqnqX=&5rr?i#X#*#;8u2h4zY9T@Uj8V*$ zV0tYRRqIta)1ozi_DZAq&9WF!ECHt=6|Nz5QbyN_(+r4IOBvC81)?wn;qhcxnh}po zn-_(pC17GTW0pVN&msW;TAV^5i#Abbl31h+8?FS5tzs4fvZ+uBQbvp-0t(U_afrv{ zF%dY#LZ)yS{&dLCs3s)J;Lt$`@FZo#QHbNQH>ui{|@ilR0sYaS$l5ppSm!$e+6A`(%G z&>OW<##~aDY>Gg?HhSgWd3OO{b0NY88 zQfM$r;lLWg;Ytv;ge{0d1QNbb!bM<&FF}Us>(wNY`oFZTn+Nh6NO>4(0`^mFqJbS1 zi6;#_4Ll~2wygv~woM^Hv4IdwXbP^j`3bNFrm%Qar@=w@7%bNpa`I0~0Z|cLkywSp z9FTmNC+2fukq{TbToD%~Z~>1a8svKj-J~ZdGit;GHGoIJ6(~;|SI`Vw27O=k#T<`Y z(*p>D5jOls!dQa=v#dSiMZ|urKXBq_QyA7{z`6k$XkMTfvWA-BAZNhezw$Gfi@(wY z1idlxTKvAD>kVD6#lUMRzp1V_biEb>uciE^y8dr;(Oxk&Y@IhnHH&s>kt&IW2~CsY>)Y^l@0;J>%TY7fJhTeAuQ6ips7FZjs& HahbmZlv-*G literal 0 HcmV?d00001 diff --git a/graphics/particles/dust.png.import b/graphics/particles/dust.png.import new file mode 100644 index 0000000..8c8baf4 --- /dev/null +++ b/graphics/particles/dust.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dust.png-593a09bcc5bad3a9c1d7cc6869faa351.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/dust.png" +dest_files=[ "res://.import/dust.png-593a09bcc5bad3a9c1d7cc6869faa351.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/objects/player/arrow_projectile.gd b/objects/player/arrow_projectile.gd index ce9837a..de7a5bf 100644 --- a/objects/player/arrow_projectile.gd +++ b/objects/player/arrow_projectile.gd @@ -15,6 +15,15 @@ func _physics_process(delta): if Game.get_sector(global_position + cull_edge) != initial_sector: queue_free() +func _exit_tree(): + # make sure particles node sticks around until particles decay + var particles = $DustParticles + remove_child(particles) + particles.global_position = global_position + particles.emitting = false + get_parent().add_child(particles) + particles.get_node("DeathTimer").start() + #Wall Collision func _on_Area2D_body_entered(body): if body is TileMap or body is StaticBody2D: diff --git a/objects/player/arrow_projectile.tscn b/objects/player/arrow_projectile.tscn index 99d5e29..7617a13 100644 --- a/objects/player/arrow_projectile.tscn +++ b/objects/player/arrow_projectile.tscn @@ -1,14 +1,37 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://scripts/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=2] [ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true +[sub_resource type="Curve" id=3] +_data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] + +[sub_resource type="CurveTexture" id=4] +width = 32 +curve = SubResource( 3 ) + +[sub_resource type="ParticlesMaterial" id=5] +flag_disable_z = true +spread = 180.0 +gravity = Vector3( 0, 0, 0 ) +initial_velocity = 8.0 +initial_velocity_random = 0.18 +orbit_velocity = 0.0 +orbit_velocity_random = 0.0 +damping = 1.0 +angle = 720.0 +angle_random = 1.0 +scale = 0.25 +scale_random = 0.25 +scale_curve = SubResource( 4 ) + [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 5.5, 3.5 ) @@ -20,10 +43,24 @@ material = SubResource( 1 ) z_index = -1 texture = ExtResource( 2 ) +[node name="DustParticles" type="Particles2D" parent="."] +show_behind_parent = true +position = Vector2( -4, 0 ) +z_index = -1 +amount = 24 +local_coords = false +process_material = SubResource( 5 ) +texture = ExtResource( 4 ) + +[node name="DeathTimer" type="Timer" parent="DustParticles"] +one_shot = true + [node name="Area2D" type="Area2D" parent="." groups=["arrow"]] +visible = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( -0.5, -0.5 ) shape = SubResource( 2 ) +[connection signal="timeout" from="DustParticles/DeathTimer" to="DustParticles" method="queue_free"] [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"]