feat: turrents and explosions
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
[gd_scene format=3 uid="uid://cd8w4ydeugrxn"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://ddv3d3cguh5hd" path="res://Game/Target/Explosion/scorches.png" id="1_rjvc0"]
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_bfsaf"]
|
||||
particles_animation = true
|
||||
particles_anim_h_frames = 3
|
||||
particles_anim_v_frames = 1
|
||||
particles_anim_loop = false
|
||||
|
||||
[sub_resource type="Curve" id="Curve_ytfwl"]
|
||||
_data = [Vector2(0.00554017, 0.021126747), 0.0, 0.0, 0, 0, Vector2(0.14681442, 0.99295783), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
|
||||
point_count = 3
|
||||
|
||||
[sub_resource type="CurveTexture" id="CurveTexture_jyg1o"]
|
||||
curve = SubResource("Curve_ytfwl")
|
||||
|
||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_u8d0v"]
|
||||
lifetime_randomness = 0.1
|
||||
particle_flag_disable_z = true
|
||||
emission_shape = 1
|
||||
emission_sphere_radius = 33.35
|
||||
spread = 180.0
|
||||
initial_velocity_min = 47.62
|
||||
initial_velocity_max = 47.62
|
||||
gravity = Vector3(0, 0, 0)
|
||||
damping_min = 97.494
|
||||
damping_max = 97.494
|
||||
color = Color(1, 0.11372549, 0.22745098, 1)
|
||||
alpha_curve = SubResource("CurveTexture_jyg1o")
|
||||
anim_speed_min = 10.0
|
||||
anim_speed_max = 10.0
|
||||
|
||||
[node name="ExplosionGPUParticles2D" type="GPUParticles2D" unique_id=1991976710]
|
||||
z_index = 1
|
||||
z_as_relative = false
|
||||
material = SubResource("CanvasItemMaterial_bfsaf")
|
||||
emitting = false
|
||||
amount = 32
|
||||
texture = ExtResource("1_rjvc0")
|
||||
lifetime = 0.3
|
||||
one_shot = true
|
||||
visibility_rect = Rect2(-200, -75, 400, 150)
|
||||
process_material = SubResource("ParticleProcessMaterial_u8d0v")
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ddv3d3cguh5hd"
|
||||
path="res://.godot/imported/scorches.png-b8a9f74019ec3d75b5befcdf7090cc9b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Game/Target/Explosion/scorches.png"
|
||||
dest_files=["res://.godot/imported/scorches.png-b8a9f74019ec3d75b5befcdf7090cc9b.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
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/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
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
|
||||
+17
-4
@@ -12,8 +12,9 @@ public partial class Target : Node2D, ITarget
|
||||
private readonly Subject<Unit> _timedOut = new();
|
||||
[Export] public required Area2D CollisionArea;
|
||||
[Export] public required Sprite2D Image;
|
||||
[Export] public double TimeOutDurationInSeconds;
|
||||
[Export] public required Timer TimeOutTimer;
|
||||
[Export] private PackedScene _explosionPackedScene = null!;
|
||||
[Inject] private ILevel _level = null!;
|
||||
|
||||
[Inject] private ITargetCollector _targetCollector = null!;
|
||||
|
||||
@@ -25,7 +26,8 @@ public partial class Target : Node2D, ITarget
|
||||
{
|
||||
Image.Visible = true;
|
||||
CollisionArea.Monitoring = true;
|
||||
TimeOutTimer.Start(TimeOutDurationInSeconds);
|
||||
CollisionArea.Monitorable = true;
|
||||
TimeOutTimer.Start(_level.SpawnDuration.TotalSeconds);
|
||||
}
|
||||
|
||||
public override void _Ready()
|
||||
@@ -39,18 +41,29 @@ public partial class Target : Node2D, ITarget
|
||||
_hit.Dispose();
|
||||
}
|
||||
|
||||
// todo: hook to collision
|
||||
private void OnAreaEntered(Area2D _)
|
||||
{
|
||||
OnHit();
|
||||
}
|
||||
|
||||
private void OnHit()
|
||||
{
|
||||
Disable();
|
||||
TimeOutTimer.Stop();
|
||||
_hit.OnNext(Unit.Default);
|
||||
|
||||
var explosion = (GpuParticles2D)_explosionPackedScene.Instantiate();
|
||||
explosion.GlobalPosition = GlobalPosition;
|
||||
explosion.Emitting = true;
|
||||
GetTree().CurrentScene.AddChild(explosion);
|
||||
}
|
||||
|
||||
private void Disable()
|
||||
{
|
||||
Image.Visible = false;
|
||||
CollisionArea.Monitoring = false;
|
||||
// can't se monitoring/monitorable when inside the collision code, like during OnHit
|
||||
CollisionArea.SetDeferred(Area2D.PropertyName.Monitoring, false);
|
||||
CollisionArea.SetDeferred(Area2D.PropertyName.Monitorable, false);
|
||||
}
|
||||
|
||||
private void OnTimeout()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
[ext_resource type="Script" uid="uid://bv2hat41dyxiv" path="res://Game/Target/Target.cs" id="1_ouani"]
|
||||
[ext_resource type="Texture2D" uid="uid://m4pvy8kkw7k4" path="res://Game/Target/towerDefense_tile136.png" id="2_olsqn"]
|
||||
[ext_resource type="PackedScene" uid="uid://cd8w4ydeugrxn" path="res://Game/Target/Explosion/explosion_gpu_particles_2d.tscn" id="2_uqpd1"]
|
||||
|
||||
[sub_resource type="CircleShape2D" id="CircleShape2D_uqpd1"]
|
||||
radius = 60.033325
|
||||
@@ -10,8 +11,8 @@ radius = 60.033325
|
||||
script = ExtResource("1_ouani")
|
||||
CollisionArea = NodePath("CollisionArea")
|
||||
Image = NodePath("Sprite2D")
|
||||
TimeOutDurationInSeconds = 7.0
|
||||
TimeOutTimer = NodePath("TimeOutTimer")
|
||||
_explosionPackedScene = ExtResource("2_uqpd1")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=31059524]
|
||||
visible = false
|
||||
@@ -30,4 +31,5 @@ shape = SubResource("CircleShape2D_uqpd1")
|
||||
[node name="TimeOutTimer" type="Timer" parent="." unique_id=1079777109]
|
||||
one_shot = true
|
||||
|
||||
[connection signal="area_entered" from="CollisionArea" to="." method="OnAreaEntered"]
|
||||
[connection signal="timeout" from="TimeOutTimer" to="." method="OnTimeout"]
|
||||
|
||||
Reference in New Issue
Block a user