From 11a50c1789ca39d21f980697d5933c23997e1328 Mon Sep 17 00:00:00 2001 From: Semnor Date: Sun, 30 Apr 2023 23:07:47 -0500 Subject: [PATCH] add particles and colony animation --- Sick_Day_Delivery/Scenes/colony.tscn | 36 ++++++++++++-- Sick_Day_Delivery/Scenes/main.tscn | 7 +-- Sick_Day_Delivery/Scenes/player_cell.tscn | 46 ++++++++++++++---- Sick_Day_Delivery/Scripts/colony.gd | 4 +- Sick_Day_Delivery/Scripts/player_cell.gd | 6 +++ .../Sprites/ColonySpriteBlink.png | Bin 0 -> 2791 bytes .../Sprites/ColonySpriteBlink.png.import | 34 +++++++++++++ .../Sprites/ColonySpriteClosing.png | Bin 0 -> 2878 bytes .../Sprites/ColonySpriteClosing.png.import | 34 +++++++++++++ .../Sprites/ColonySpriteOpen.png | Bin 0 -> 2904 bytes .../Sprites/ColonySpriteOpen.png.import | 34 +++++++++++++ 11 files changed, 182 insertions(+), 19 deletions(-) create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteBlink.png create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteBlink.png.import create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteClosing.png create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteClosing.png.import create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteOpen.png create mode 100644 Sick_Day_Delivery/Sprites/ColonySpriteOpen.png.import diff --git a/Sick_Day_Delivery/Scenes/colony.tscn b/Sick_Day_Delivery/Scenes/colony.tscn index 67bdbae..4629919 100644 --- a/Sick_Day_Delivery/Scenes/colony.tscn +++ b/Sick_Day_Delivery/Scenes/colony.tscn @@ -1,13 +1,38 @@ -[gd_scene load_steps=6 format=3 uid="uid://cl3gneduvqjdn"] +[gd_scene load_steps=9 format=3 uid="uid://cl3gneduvqjdn"] [ext_resource type="Script" path="res://Scripts/colony.gd" id="1_7606h"] [ext_resource type="PackedScene" uid="uid://bshn0kdmpqbnj" path="res://Scenes/bacterium.tscn" id="2_fxxkw"] [ext_resource type="Script" path="res://Scripts/ColonyTimer.gd" id="3_pkowl"] -[ext_resource type="Texture2D" uid="uid://dhuvgmi3gk51t" path="res://Sprites/BacteriumPlaceholderOpen.png" id="4_w31ri"] +[ext_resource type="Texture2D" uid="uid://c7mctw3a8v2vt" path="res://Sprites/ColonySpriteOpen.png" id="4_dil1y"] +[ext_resource type="Texture2D" uid="uid://b3ggt8q855jj5" path="res://Sprites/ColonySpriteClosing.png" id="5_capt4"] +[ext_resource type="Texture2D" uid="uid://clqann34s4y8d" path="res://Sprites/ColonySpriteBlink.png" id="6_1r17b"] [sub_resource type="CircleShape2D" id="CircleShape2D_c51ot"] radius = 34.2345 +[sub_resource type="SpriteFrames" id="SpriteFrames_e4qsp"] +animations = [{ +"frames": [{ +"duration": 15.0, +"texture": ExtResource("4_dil1y") +}, { +"duration": 0.75, +"texture": ExtResource("5_capt4") +}, { +"duration": 1.0, +"texture": ExtResource("6_1r17b") +}, { +"duration": 0.75, +"texture": ExtResource("5_capt4") +}, { +"duration": 15.0, +"texture": ExtResource("4_dil1y") +}], +"loop": true, +"name": &"Blink", +"speed": 10.0 +}] + [node name="colony" type="Area2D"] position = Vector2(609, 726) script = ExtResource("1_7606h") @@ -18,13 +43,14 @@ metadata/_edit_group_ = true autostart = true script = ExtResource("3_pkowl") -[node name="ColonySprite" type="Sprite2D" parent="."] -texture = ExtResource("4_w31ri") - [node name="ColonyCollider" type="CollisionShape2D" parent="."] position = Vector2(9, 7) shape = SubResource("CircleShape2D_c51ot") +[node name="ColonyAnimation" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_e4qsp") +animation = &"Blink" + [connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_exited" from="." to="." method="_on_body_exited"] [connection signal="timeout" from="ColonyTimer" to="." method="_on_colony_timer_timeout"] diff --git a/Sick_Day_Delivery/Scenes/main.tscn b/Sick_Day_Delivery/Scenes/main.tscn index e69bd11..d505ef6 100644 --- a/Sick_Day_Delivery/Scenes/main.tscn +++ b/Sick_Day_Delivery/Scenes/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://dyuaql73pytmx"] +[gd_scene load_steps=10 format=3 uid="uid://b4xi3mlkhu4ow"] [ext_resource type="PackedScene" uid="uid://bhh5dmfulsc0f" path="res://Scenes/body_map.tscn" id="1_6xrru"] [ext_resource type="Script" path="res://Scripts/main.gd" id="1_mnr5t"] @@ -8,7 +8,7 @@ [ext_resource type="PackedScene" uid="uid://q78nn6ov4tkl" path="res://Scenes/infection_spawner.tscn" id="7_sg8fw"] [ext_resource type="PackedScene" uid="uid://cl3gneduvqjdn" path="res://Scenes/colony.tscn" id="8_nndff"] [ext_resource type="PackedScene" uid="uid://by2kd0e26letn" path="res://Scenes/HUD.tscn" id="8_to7ic"] -[ext_resource type="PackedScene" uid="uid://ccvpanj0i8wfv" path="res://Scenes/pause_menu.tscn" id="9_y16aj"] +[ext_resource type="PackedScene" path="res://Scenes/pause_menu.tscn" id="9_y16aj"] [node name="Node2D" type="Node2D"] script = ExtResource("1_mnr5t") @@ -44,7 +44,6 @@ position = Vector2(1571, 1134) [node name="Left_Elbow" type="Node2D" parent="infection_spawner/SpawnPoints"] position = Vector2(2103, 1754) -[node name="PauseMenu" parent="." instance=ExtResource("9_y16aj")] [node name="Right_Elbow" type="Node2D" parent="infection_spawner/SpawnPoints"] position = Vector2(899, 1705) @@ -65,3 +64,5 @@ position = Vector2(1510, 1969) [node name="Mid_Torso" type="Node2D" parent="infection_spawner/SpawnPoints"] position = Vector2(1554, 1541) + +[node name="PauseMenu" parent="." instance=ExtResource("9_y16aj")] diff --git a/Sick_Day_Delivery/Scenes/player_cell.tscn b/Sick_Day_Delivery/Scenes/player_cell.tscn index b5dc750..a5e5342 100644 --- a/Sick_Day_Delivery/Scenes/player_cell.tscn +++ b/Sick_Day_Delivery/Scenes/player_cell.tscn @@ -2,10 +2,32 @@ [ext_resource type="Script" path="res://Scripts/player_cell.gd" id="1_aui7q"] [ext_resource type="Texture2D" uid="uid://bgfxom1a4pd4b" path="res://Sprites/Pill_PlaceholderOpen.png" id="2_cb6xu"] +[ext_resource type="Texture2D" uid="uid://d1spj261c4q8f" path="res://Sprites/Pill_Placeholder.png" id="2_juu6w"] [ext_resource type="Texture2D" uid="uid://dpsrjkbs785cv" path="res://Sprites/Pill_PlaceholderClosing.png" id="3_b0xxo"] [ext_resource type="Texture2D" uid="uid://dpxwmtk4ldmci" path="res://Sprites/Pill_PlaceholderBlink.png" id="4_h4bqs"] [ext_resource type="PackedScene" uid="uid://dda8sqvfl2s8l" path="res://Scenes/bacteria_indicator.tscn" id="5_f10cd"] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_2k2cv"] +radius = 40.0 +height = 140.0 + +[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_7ckoj"] +lifetime_randomness = 0.5 +particle_flag_disable_z = true +direction = Vector3(1, 1, 0) +spread = 180.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = 300.0 +initial_velocity_max = 300.0 +angular_velocity_max = 100.0 +orbit_velocity_min = 0.0 +orbit_velocity_max = 0.0 +angle_max = 360.0 +scale_min = 0.02 +scale_max = 0.08 +hue_variation_min = -0.37 +hue_variation_max = 0.24 + [sub_resource type="SpriteFrames" id="SpriteFrames_lf3au"] animations = [{ "frames": [{ @@ -29,10 +51,6 @@ animations = [{ "speed": 10.0 }] -[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_2k2cv"] -radius = 40.0 -height = 140.0 - [node name="PlayerCell" type="CharacterBody2D" groups=["Player"]] scale = Vector2(0.1, 0.1) motion_mode = 1 @@ -40,11 +58,6 @@ wall_min_slide_angle = 0.0174533 script = ExtResource("1_aui7q") metadata/_edit_group_ = true -[node name="PlayerAnimation" type="AnimatedSprite2D" parent="."] -sprite_frames = SubResource("SpriteFrames_lf3au") -frame = 4 -frame_progress = 0.895432 - [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource("CapsuleShape2D_2k2cv") @@ -57,3 +70,18 @@ limit_bottom = 5000 position_smoothing_speed = 10.0 [node name="bacteria_indicator" parent="." instance=ExtResource("5_f10cd")] +[node name="GPUParticles2D" type="GPUParticles2D" parent="."] +emitting = false +amount = 20 +process_material = SubResource("ParticleProcessMaterial_7ckoj") +texture = ExtResource("2_juu6w") +one_shot = true +explosiveness = 1.0 +randomness = 0.75 +visibility_rect = Rect2(0, 0, 0, 0) + +[node name="PlayerAnimation" type="AnimatedSprite2D" parent="."] +scale = Vector2(1, 1) +sprite_frames = SubResource("SpriteFrames_lf3au") +frame = 4 +frame_progress = 0.895432 diff --git a/Sick_Day_Delivery/Scripts/colony.gd b/Sick_Day_Delivery/Scripts/colony.gd index 2a4810f..70a342d 100644 --- a/Sick_Day_Delivery/Scripts/colony.gd +++ b/Sick_Day_Delivery/Scripts/colony.gd @@ -12,13 +12,13 @@ var colony_ded = false # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + $ColonyAnimation.play("Blink") # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): if Input.is_action_pressed("cure") && colliding: - $ColonySprite.hide() + $ColonyAnimation.hide() process_priority = 0 if self.get_children().size() == 3 && process_priority == 0: print_debug("colony destroyed") diff --git a/Sick_Day_Delivery/Scripts/player_cell.gd b/Sick_Day_Delivery/Scripts/player_cell.gd index 8470fbe..6dbf6b6 100644 --- a/Sick_Day_Delivery/Scripts/player_cell.gd +++ b/Sick_Day_Delivery/Scripts/player_cell.gd @@ -27,3 +27,9 @@ func _physics_process(delta): var collision = get_slide_collision(i) # print_debug(collision.get_collider().name) + if Input.is_action_just_pressed("cure"): + if $GPUParticles2D.emitting == false: + $GPUParticles2D.restart() + $GPUParticles2D.emitting = true +# if Input.is_action_just_released("cure"): +# $GPUParticles2D.emitting = false diff --git a/Sick_Day_Delivery/Sprites/ColonySpriteBlink.png b/Sick_Day_Delivery/Sprites/ColonySpriteBlink.png new file mode 100644 index 0000000000000000000000000000000000000000..55ec7b5cd7fb75f772dbaad0fadd72bfd7ff265f GIT binary patch literal 2791 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 literal 0 HcmV?d00001 diff --git a/Sick_Day_Delivery/Sprites/ColonySpriteBlink.png.import b/Sick_Day_Delivery/Sprites/ColonySpriteBlink.png.import new file mode 100644 index 0000000..87f8b96 --- /dev/null +++ b/Sick_Day_Delivery/Sprites/ColonySpriteBlink.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clqann34s4y8d" +path="res://.godot/imported/ColonySpriteBlink.png-fac7703935a44361d3e68a81495ce882.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/ColonySpriteBlink.png" +dest_files=["res://.godot/imported/ColonySpriteBlink.png-fac7703935a44361d3e68a81495ce882.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=1 diff --git a/Sick_Day_Delivery/Sprites/ColonySpriteClosing.png b/Sick_Day_Delivery/Sprites/ColonySpriteClosing.png new file mode 100644 index 0000000000000000000000000000000000000000..ee36d051b099e4d9ac81df1612197449a4c08058 GIT binary patch literal 2878 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 crA77oA2pXYo3-oOa$VE`HvlFoci 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