From dc81796d525e4a4df5864a99d451050d1123c4aa Mon Sep 17 00:00:00 2001 From: Minimata Date: Sat, 16 May 2026 20:56:20 +0200 Subject: [PATCH] fixed cue issue and setup proper waves --- managers/TokenManager.cs | 30 +- managers/Wave/EnemyDescription.cs | 1 + .../Wave/resources/flying_enemy_desc.tres | 3 + maps/levels/4 - tuto_waves.tscn | 304 +++++++++++++++++- scenes/components/movement/CFlyingMovement.cs | 4 +- .../flying_enemy/flying_enemy_movement.tres | 6 +- 6 files changed, 322 insertions(+), 26 deletions(-) diff --git a/managers/TokenManager.cs b/managers/TokenManager.cs index 5d441b55..1a151a89 100644 --- a/managers/TokenManager.cs +++ b/managers/TokenManager.cs @@ -17,7 +17,7 @@ public partial class TokenManager : Node private Dictionary Tokens { get; set; } = []; public int TokenCount => Tokens.Count; - private List RequestQueue { get; set; } = []; + private Queue RequestQueue { get; set; } = []; public int MaxTokens { get; set;} @@ -28,15 +28,27 @@ public partial class TokenManager : Node public Token? RequestToken(Node owner) { - if (Tokens.ContainsKey(owner.GetInstanceId())) return null; // Already has a token - if (RequestQueue.Contains(owner.GetInstanceId())) return null; // Already in queue + if (Tokens.ContainsKey(owner.GetInstanceId())) + { + GD.Print("Already has a token"); + return null; // Already has a token + } + if (TokenCount >= MaxTokens) + { + GD.Print($"Max tokens reached: {TokenCount}"); + return null; // Max tokens reached + } + if (!RequestQueue.Contains(owner.GetInstanceId())) + { + RequestQueue.Enqueue(owner.GetInstanceId()); + } + if (RequestQueue.First() != owner.GetInstanceId()) + { + GD.Print("Waiting its turn"); + return null; // Next in line is not the requester + } - RequestQueue.Add(owner.GetInstanceId()); - if (TokenCount >= MaxTokens) return null; // Max tokens reached - if (RequestQueue.First() != owner.GetInstanceId()) return null; // Next in line is not the requester - - RequestQueue.RemoveAt(0); - var ownerInstanceId = owner.GetInstanceId(); + var ownerInstanceId = RequestQueue.Dequeue(); var token = new Token(ownerInstanceId, () => UseToken(ownerInstanceId)); Tokens.Add(token.InstanceId, token); return token; diff --git a/managers/Wave/EnemyDescription.cs b/managers/Wave/EnemyDescription.cs index 2ee902d3..3034a2b5 100644 --- a/managers/Wave/EnemyDescription.cs +++ b/managers/Wave/EnemyDescription.cs @@ -8,6 +8,7 @@ public partial class EnemyDescription(PackedScene scene, EnemyDescription.EnemyT public enum EnemyType { Normal, + Flying, Projectile, } diff --git a/managers/Wave/resources/flying_enemy_desc.tres b/managers/Wave/resources/flying_enemy_desc.tres index adedc484..9895abd6 100644 --- a/managers/Wave/resources/flying_enemy_desc.tres +++ b/managers/Wave/resources/flying_enemy_desc.tres @@ -1,9 +1,12 @@ [gd_resource type="Resource" script_class="EnemyDescription" format=3 uid="uid://cfyafss8ncbhh"] +[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="1_hsb6g"] [ext_resource type="PackedScene" uid="uid://cmlud1hwkd6sv" path="res://scenes/enemies/flying_enemy/flying_enemy.tscn" id="1_yvgr4"] [ext_resource type="Script" uid="uid://rhdkfi7nuvu1" path="res://managers/Wave/EnemyDescription.cs" id="2_hsb6g"] [resource] script = ExtResource("2_hsb6g") Scene = ExtResource("1_yvgr4") +Type = 1 +MovementOverride = ExtResource("1_hsb6g") metadata/_custom_type_script = "uid://rhdkfi7nuvu1" diff --git a/maps/levels/4 - tuto_waves.tscn b/maps/levels/4 - tuto_waves.tscn index 89158e85..02ac8088 100644 --- a/maps/levels/4 - tuto_waves.tscn +++ b/maps/levels/4 - tuto_waves.tscn @@ -1,7 +1,6 @@ [gd_scene format=3 uid="uid://b2g2gys4dopmn"] [ext_resource type="PackedScene" uid="uid://55wehh6xombr" path="res://maps/_templates/main_scene_template.tscn" id="1_pxwoj"] -[ext_resource type="Resource" uid="uid://dm71u0ryn0w1o" path="res://managers/Wave/resources/one_of_each_wave.tres" id="2_a6jwd"] [ext_resource type="PackedScene" uid="uid://y77cdg7gg3y7" path="res://maps/levels/_arenas/playtest_1.tscn" id="2_apgv3"] [ext_resource type="Material" uid="uid://31aulub2nqov" path="res://assets/materials/greybox/m_greybox.tres" id="3_452yy"] [ext_resource type="Script" uid="uid://rhdkfi7nuvu1" path="res://managers/Wave/EnemyDescription.cs" id="3_a6jwd"] @@ -12,6 +11,28 @@ [ext_resource type="Resource" uid="uid://lnturc3ibr5c" path="res://managers/Wave/resources/projectile_enemy_desc.tres" id="5_hm1dp"] [ext_resource type="Script" uid="uid://dijmv0wqc1xuv" path="res://managers/Wave/WaveContent.cs" id="6_hm1dp"] +[sub_resource type="Resource" id="Resource_7ijxg"] +script = ExtResource("5_7ijxg") +EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ +ExtResource("4_7ijxg"): 4 +}) +metadata/_custom_type_script = "uid://cr8wog705ane6" + +[sub_resource type="Resource" id="Resource_hm1dp"] +script = ExtResource("5_7ijxg") +EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ +ExtResource("4_7ijxg"): 8, +ExtResource("3_re07p"): 3 +}) +metadata/_custom_type_script = "uid://cr8wog705ane6" + +[sub_resource type="Resource" id="Resource_a6jwd"] +script = ExtResource("5_7ijxg") +EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ +ExtResource("5_hm1dp"): 3 +}) +metadata/_custom_type_script = "uid://cr8wog705ane6" + [sub_resource type="Resource" id="Resource_wllel"] script = ExtResource("5_7ijxg") EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ @@ -21,13 +42,28 @@ ExtResource("3_re07p"): 4 }) metadata/_custom_type_script = "uid://cr8wog705ane6" +[sub_resource type="Resource" id="Resource_re07p"] +script = ExtResource("5_7ijxg") +EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ +ExtResource("3_re07p"): 15 +}) +metadata/_custom_type_script = "uid://cr8wog705ane6" + +[sub_resource type="Resource" id="Resource_t6pb5"] +script = ExtResource("5_7ijxg") +EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ +ExtResource("4_7ijxg"): 15, +ExtResource("5_hm1dp"): 10, +ExtResource("3_re07p"): 10 +}) +metadata/_custom_type_script = "uid://cr8wog705ane6" + [sub_resource type="Resource" id="Resource_e88eg"] script = ExtResource("6_hm1dp") -Waves = Array[Object]([SubResource("Resource_wllel"), ExtResource("2_a6jwd")]) +Waves = Array[Object]([SubResource("Resource_7ijxg"), SubResource("Resource_hm1dp"), SubResource("Resource_a6jwd"), SubResource("Resource_wllel"), SubResource("Resource_re07p"), SubResource("Resource_t6pb5")]) metadata/_custom_type_script = "uid://dijmv0wqc1xuv" [node name="Main" unique_id=955321579 instance=ExtResource("1_pxwoj")] -MaxNumberOfProjectiles = 2 WaveContent = SubResource("Resource_e88eg") [node name="PlaytestArena" parent="." index="12" unique_id=664535670 instance=ExtResource("2_apgv3")] @@ -39,32 +75,274 @@ use_collision = true size = Vector3(1, 17.5, 9.5) material = ExtResource("3_452yy") -[node name="Spawner" parent="." index="13" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 1, -4) -SupportedEnemyTypes = Array[int]([0]) -Target = NodePath("../Player") -IsActiveOnStart = false - -[node name="Spawner2" parent="." index="14" unique_id=1982641431 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +[node name="Spawner2" parent="." index="13" unique_id=1982641431 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1, -4) SupportedEnemyTypes = Array[int]([0]) Target = NodePath("../Player") IsActiveOnStart = false -[node name="Spawner3" parent="." index="15" unique_id=1743153579 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +[node name="Spawner3" parent="." index="14" unique_id=1743153579 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 1, -4) SupportedEnemyTypes = Array[int]([1]) Target = NodePath("../Player") IsActiveOnStart = false -[node name="Spawner4" parent="." index="16" unique_id=536869732 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +[node name="Spawner4" parent="." index="15" unique_id=536869732 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 1, -4) SupportedEnemyTypes = Array[int]([1, 0]) Target = NodePath("../Player") IsActiveOnStart = false -[node name="Spawner5" parent="." index="17" unique_id=275129467 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +[node name="Spawner5" parent="." index="16" unique_id=275129467 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 1, -4) SupportedEnemyTypes = Array[int]([1, 0]) Target = NodePath("../Player") IsActiveOnStart = false + +[node name="Spawners" type="Node3D" parent="." index="17" unique_id=1784503796] + +[node name="Grounded" type="Node3D" parent="Spawners" index="0" unique_id=2135113359] + +[node name="Spawner" parent="Spawners/Grounded" index="0" unique_id=580981173 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 1, -4) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner13" parent="Spawners/Grounded" index="1" unique_id=771710160 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, -4) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner14" parent="Spawners/Grounded" index="2" unique_id=947491829 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 1, -4) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner15" parent="Spawners/Grounded" index="3" unique_id=519369782 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 1, 5.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner16" parent="Spawners/Grounded" index="4" unique_id=1219755801 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 1, -9.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner17" parent="Spawners/Grounded" index="5" unique_id=1403055240 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5, 1, -9.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner18" parent="Spawners/Grounded" index="6" unique_id=1479410245 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.5, 1, 7.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner19" parent="Spawners/Grounded" index="7" unique_id=1743292696 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.5, 7, -9.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner21" parent="Spawners/Grounded" index="8" unique_id=1801083740 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.5, 11.5, -24.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner22" parent="Spawners/Grounded" index="9" unique_id=1296256003 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 11.5, -24.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner20" parent="Spawners/Grounded" index="10" unique_id=1527237523 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5, 7, -9.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner2" parent="Spawners/Grounded" index="11" unique_id=834604221 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 1, -23.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner3" parent="Spawners/Grounded" index="12" unique_id=270195635 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8, 1, -30.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner4" parent="Spawners/Grounded" index="13" unique_id=1202580658 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 1, -33) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner5" parent="Spawners/Grounded" index="14" unique_id=1987649511 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 1, -33) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner6" parent="Spawners/Grounded" index="15" unique_id=1276050304 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.5, 1, -25) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner7" parent="Spawners/Grounded" index="16" unique_id=825475214 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.5, 1, -17.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner8" parent="Spawners/Grounded" index="17" unique_id=1896505808 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 6, -17.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner11" parent="Spawners/Grounded" index="18" unique_id=1922800453 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 7, -8) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner12" parent="Spawners/Grounded" index="19" unique_id=172297553 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14, 7, -8) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner9" parent="Spawners/Grounded" index="20" unique_id=242104600 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 5, -17.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner10" parent="Spawners/Grounded" index="21" unique_id=1537236940 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.5, 3.5, -17.5) +SupportedEnemyTypes = Array[int]([0]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Flying" type="Node3D" parent="Spawners" index="1" unique_id=1568736683] + +[node name="Spawner2" parent="Spawners/Flying" index="0" unique_id=540145996 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 26.051147, -34) +SupportedEnemyTypes = Array[int]([1]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner3" parent="Spawners/Flying" index="1" unique_id=286744715 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27, 26.051147, -34) +SupportedEnemyTypes = Array[int]([1]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner4" parent="Spawners/Flying" index="2" unique_id=97624405 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.5, 26.051147, -31) +SupportedEnemyTypes = Array[int]([1]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner5" parent="Spawners/Flying" index="3" unique_id=452318421 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 13.051147, 3.5) +SupportedEnemyTypes = Array[int]([1]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner6" parent="Spawners/Flying" index="4" unique_id=1238823469 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 13.051147, 8) +SupportedEnemyTypes = Array[int]([1]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Projectile" type="Node3D" parent="Spawners" index="2" unique_id=1258161549] + +[node name="Spawner3" parent="Spawners/Projectile" index="0" unique_id=1747138734 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 7.5, 8.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner4" parent="Spawners/Projectile" index="1" unique_id=1503627609 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 11, 9.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner5" parent="Spawners/Projectile" index="2" unique_id=2041198655 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 11, 9.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner6" parent="Spawners/Projectile" index="3" unique_id=552715567 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 11, 1.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner7" parent="Spawners/Projectile" index="4" unique_id=70054371 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5, 12, -9.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner8" parent="Spawners/Projectile" index="5" unique_id=1180979948 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 12, -9.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner9" parent="Spawners/Projectile" index="6" unique_id=1257162636 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.5, 12, -9.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner10" parent="Spawners/Projectile" index="7" unique_id=508868686 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 17.5, -8.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner11" parent="Spawners/Projectile" index="8" unique_id=1732590308 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 17.5, -17.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner12" parent="Spawners/Projectile" index="9" unique_id=1601257376 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7, 17.5, -24.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner13" parent="Spawners/Projectile" index="10" unique_id=391332199 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17, 17.5, -24.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner14" parent="Spawners/Projectile" index="11" unique_id=1920158287 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.5, 17.5, -24.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false + +[node name="Spawner15" parent="Spawners/Projectile" index="12" unique_id=1099390523 node_paths=PackedStringArray("Target") instance=ExtResource("4_6q0yp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -12, 11, -26.5) +SupportedEnemyTypes = Array[int]([2]) +Target = NodePath("../../../Player") +IsActiveOnStart = false diff --git a/scenes/components/movement/CFlyingMovement.cs b/scenes/components/movement/CFlyingMovement.cs index 0f711034..85e85bc9 100644 --- a/scenes/components/movement/CFlyingMovement.cs +++ b/scenes/components/movement/CFlyingMovement.cs @@ -26,7 +26,9 @@ public partial class CFlyingMovement : Node3D, IMoveable var velocity = inputs.Velocity; var spaceState = GetWorld3D().DirectSpaceState; var target = inputs.TargetLocation; - var direction = (target - GlobalPosition).Normalized(); + var direction = GlobalPosition.DirectionTo(target); + velocity = velocity.Lerp(direction * RMovement.Speed, (float) inputs.Delta * RMovement.Acceleration); + return velocity; // Check if we have a direct line of sight to the player if (!_movingToDesiredHeight) { diff --git a/scenes/enemies/flying_enemy/flying_enemy_movement.tres b/scenes/enemies/flying_enemy/flying_enemy_movement.tres index 016e95d4..809b4102 100644 --- a/scenes/enemies/flying_enemy/flying_enemy_movement.tres +++ b/scenes/enemies/flying_enemy/flying_enemy_movement.tres @@ -4,7 +4,7 @@ [resource] script = ExtResource("1_3yq0a") -Speed = 3.0 -Acceleration = 5.0 -TargetHeight = 10.0 +Speed = 6.0 +Acceleration = 8.0 +TargetHeight = 8.0 metadata/_custom_type_script = "uid://dtpxijlnb2c5"