diff --git a/assets/spritesheets/explosion.png b/assets/spritesheets/explosion.png new file mode 100644 index 0000000..4365074 Binary files /dev/null and b/assets/spritesheets/explosion.png differ diff --git a/assets/spritesheets/explosion.png.import b/assets/spritesheets/explosion.png.import new file mode 100644 index 0000000..ef590b2 --- /dev/null +++ b/assets/spritesheets/explosion.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://vpx6vs4ufycr" +path="res://.godot/imported/explosion.png-886739e81fcc3dcfae2147b72459ccad.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/spritesheets/explosion.png" +dest_files=["res://.godot/imported/explosion.png-886739e81fcc3dcfae2147b72459ccad.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/scenes/bullets/bullet_1.tscn b/scenes/bullets/bullet_1.tscn index 3a25a6e..6c8cddb 100644 --- a/scenes/bullets/bullet_1.tscn +++ b/scenes/bullets/bullet_1.tscn @@ -1,11 +1,86 @@ -[gd_scene load_steps=4 format=3 uid="uid://dqa80ptcc8p70"] +[gd_scene load_steps=16 format=3 uid="uid://dqa80ptcc8p70"] [ext_resource type="Script" path="res://scripts/bullets/bullet.gd" id="1_lacqw"] [ext_resource type="Texture2D" uid="uid://c57taqe4k3mi2" path="res://assets/spritesheets/bullet-1.png" id="2_o8iut"] +[ext_resource type="Texture2D" uid="uid://vpx6vs4ufycr" path="res://assets/spritesheets/explosion.png" id="3_wtt2i"] [sub_resource type="CircleShape2D" id="CircleShape2D_3cgpo"] radius = 6.0 +[sub_resource type="CircleShape2D" id="CircleShape2D_dyohr"] +radius = 88.0511 + +[sub_resource type="AtlasTexture" id="AtlasTexture_2161y"] +atlas = ExtResource("3_wtt2i") +region = Rect2(0, 0, 1500, 1125) + +[sub_resource type="AtlasTexture" id="AtlasTexture_iaa62"] +atlas = ExtResource("3_wtt2i") +region = Rect2(1500, 0, 1500, 1125) + +[sub_resource type="AtlasTexture" id="AtlasTexture_6haw2"] +atlas = ExtResource("3_wtt2i") +region = Rect2(3000, 0, 1500, 1125) + +[sub_resource type="AtlasTexture" id="AtlasTexture_k4fug"] +atlas = ExtResource("3_wtt2i") +region = Rect2(0, 1100, 1500, 1700) + +[sub_resource type="AtlasTexture" id="AtlasTexture_icmj8"] +atlas = ExtResource("3_wtt2i") +region = Rect2(1500, 1100, 1500, 1700) + +[sub_resource type="AtlasTexture" id="AtlasTexture_cckbs"] +atlas = ExtResource("3_wtt2i") +region = Rect2(3000, 1100, 1500, 1700) + +[sub_resource type="AtlasTexture" id="AtlasTexture_s5xhq"] +atlas = ExtResource("3_wtt2i") +region = Rect2(0, 2700, 1500, 1500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sxyjv"] +atlas = ExtResource("3_wtt2i") +region = Rect2(1500, 2700, 1500, 1500) + +[sub_resource type="AtlasTexture" id="AtlasTexture_50qmh"] +atlas = ExtResource("3_wtt2i") +region = Rect2(3000, 2700, 1500, 1500) + +[sub_resource type="SpriteFrames" id="SpriteFrames_88q0q"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_2161y") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_iaa62") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_6haw2") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_k4fug") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_icmj8") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_cckbs") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_s5xhq") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sxyjv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_50qmh") +}], +"loop": true, +"name": &"default", +"speed": 12.0 +}] + [node name="bullet" type="Area2D"] script = ExtResource("1_lacqw") @@ -19,5 +94,19 @@ shape = SubResource("CircleShape2D_3cgpo") [node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="."] +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +shape = SubResource("CircleShape2D_dyohr") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +visible = false +scale = Vector2(0.15, 0.15) +sprite_frames = SubResource("SpriteFrames_88q0q") +frame = 7 +frame_progress = 0.957328 + [connection signal="body_entered" from="." to="." method="_on_Bullet_body_entered"] [connection signal="screen_exited" from="VisibleOnScreenNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] +[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"] +[connection signal="body_exited" from="Area2D" to="." method="_on_body_exited"] diff --git a/scripts/bullets/bullet.gd b/scripts/bullets/bullet.gd index 2a609c0..c4968a3 100644 --- a/scripts/bullets/bullet.gd +++ b/scripts/bullets/bullet.gd @@ -6,10 +6,14 @@ var speed: int = 0 var damage: int = 0 var dir = 0 var area_damage: bool = false -var area_damage_target = [] var slow_effect: bool = false +var enemies = [] +var stop: bool = false + func _physics_process(_delta): + if stop: + return var move_dir = Vector2(1,0).rotated(dir) global_position += (move_dir * speed) @@ -19,11 +23,23 @@ func _on_VisibilityNotifier2D_screen_exited(): func _on_Bullet_body_entered(body): if body.is_in_group("Enemy"): if area_damage: - for enemy in area_damage_target: + $Sprite2D.hide() + stop = true + $AnimatedSprite2D.visible = true + $AnimatedSprite2D.play("default") + for enemy in enemies: enemy.hit(damage) + await get_tree().create_timer(1).timeout elif slow_effect: body.get_parent().hit(damage) body.get_parent().slow() else: body.get_parent().hit(damage) queue_free() + +func _on_body_entered(body): + if body.is_in_group("Enemy"): + enemies.append(body.get_parent()) + +func _on_body_exited(body): + enemies.erase(body.get_parent()) \ No newline at end of file diff --git a/scripts/towers/tower.gd b/scripts/towers/tower.gd index b51deb5..d67c94b 100644 --- a/scripts/towers/tower.gd +++ b/scripts/towers/tower.gd @@ -73,7 +73,6 @@ func _shoot(): bullet_instance.speed = speed bullet_instance.damage = damage bullet_instance.area_damage = area_damage - bullet_instance.area_damage_target = enemies bullet_instance.slow_effect = slow_effect get_tree().current_scene.add_child(bullet_instance) health -= durability_reduction