fixed cue issue and setup proper waves
Some checks failed
Create tag and build when new code gets to main / BumpTag (push) Successful in 26s
Create tag and build when new code gets to main / Export (push) Has been cancelled

This commit is contained in:
2026-05-16 20:56:20 +02:00
parent 2103832e46
commit dc81796d52
6 changed files with 322 additions and 26 deletions

View File

@@ -17,7 +17,7 @@ public partial class TokenManager : Node
private Dictionary<ulong, Token> Tokens { get; set; } = []; private Dictionary<ulong, Token> Tokens { get; set; } = [];
public int TokenCount => Tokens.Count; public int TokenCount => Tokens.Count;
private List<ulong> RequestQueue { get; set; } = []; private Queue<ulong> RequestQueue { get; set; } = [];
public int MaxTokens { get; set;} public int MaxTokens { get; set;}
@@ -28,15 +28,27 @@ public partial class TokenManager : Node
public Token? RequestToken(Node owner) public Token? RequestToken(Node owner)
{ {
if (Tokens.ContainsKey(owner.GetInstanceId())) return null; // Already has a token if (Tokens.ContainsKey(owner.GetInstanceId()))
if (RequestQueue.Contains(owner.GetInstanceId())) return null; // Already in queue {
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()); var ownerInstanceId = RequestQueue.Dequeue();
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 token = new Token(ownerInstanceId, () => UseToken(ownerInstanceId)); var token = new Token(ownerInstanceId, () => UseToken(ownerInstanceId));
Tokens.Add(token.InstanceId, token); Tokens.Add(token.InstanceId, token);
return token; return token;

View File

@@ -8,6 +8,7 @@ public partial class EnemyDescription(PackedScene scene, EnemyDescription.EnemyT
public enum EnemyType public enum EnemyType
{ {
Normal, Normal,
Flying,
Projectile, Projectile,
} }

View File

@@ -1,9 +1,12 @@
[gd_resource type="Resource" script_class="EnemyDescription" format=3 uid="uid://cfyafss8ncbhh"] [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="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"] [ext_resource type="Script" uid="uid://rhdkfi7nuvu1" path="res://managers/Wave/EnemyDescription.cs" id="2_hsb6g"]
[resource] [resource]
script = ExtResource("2_hsb6g") script = ExtResource("2_hsb6g")
Scene = ExtResource("1_yvgr4") Scene = ExtResource("1_yvgr4")
Type = 1
MovementOverride = ExtResource("1_hsb6g")
metadata/_custom_type_script = "uid://rhdkfi7nuvu1" metadata/_custom_type_script = "uid://rhdkfi7nuvu1"

View File

@@ -1,7 +1,6 @@
[gd_scene format=3 uid="uid://b2g2gys4dopmn"] [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="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="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="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"] [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="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"] [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"] [sub_resource type="Resource" id="Resource_wllel"]
script = ExtResource("5_7ijxg") script = ExtResource("5_7ijxg")
EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({ EnemiesToSpawn = Dictionary[ExtResource("3_a6jwd"), int]({
@@ -21,13 +42,28 @@ ExtResource("3_re07p"): 4
}) })
metadata/_custom_type_script = "uid://cr8wog705ane6" 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"] [sub_resource type="Resource" id="Resource_e88eg"]
script = ExtResource("6_hm1dp") 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" metadata/_custom_type_script = "uid://dijmv0wqc1xuv"
[node name="Main" unique_id=955321579 instance=ExtResource("1_pxwoj")] [node name="Main" unique_id=955321579 instance=ExtResource("1_pxwoj")]
MaxNumberOfProjectiles = 2
WaveContent = SubResource("Resource_e88eg") WaveContent = SubResource("Resource_e88eg")
[node name="PlaytestArena" parent="." index="12" unique_id=664535670 instance=ExtResource("2_apgv3")] [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) size = Vector3(1, 17.5, 9.5)
material = ExtResource("3_452yy") material = ExtResource("3_452yy")
[node name="Spawner" parent="." index="13" unique_id=580981173 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, -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")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1, -4) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1, -4)
SupportedEnemyTypes = Array[int]([0]) SupportedEnemyTypes = Array[int]([0])
Target = NodePath("../Player") Target = NodePath("../Player")
IsActiveOnStart = false 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5, 1, -4)
SupportedEnemyTypes = Array[int]([1]) SupportedEnemyTypes = Array[int]([1])
Target = NodePath("../Player") Target = NodePath("../Player")
IsActiveOnStart = false 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8, 1, -4)
SupportedEnemyTypes = Array[int]([1, 0]) SupportedEnemyTypes = Array[int]([1, 0])
Target = NodePath("../Player") Target = NodePath("../Player")
IsActiveOnStart = false 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13, 1, -4)
SupportedEnemyTypes = Array[int]([1, 0]) SupportedEnemyTypes = Array[int]([1, 0])
Target = NodePath("../Player") Target = NodePath("../Player")
IsActiveOnStart = false 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

View File

@@ -26,7 +26,9 @@ public partial class CFlyingMovement : Node3D, IMoveable
var velocity = inputs.Velocity; var velocity = inputs.Velocity;
var spaceState = GetWorld3D().DirectSpaceState; var spaceState = GetWorld3D().DirectSpaceState;
var target = inputs.TargetLocation; 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 // Check if we have a direct line of sight to the player
if (!_movingToDesiredHeight) if (!_movingToDesiredHeight)
{ {

View File

@@ -4,7 +4,7 @@
[resource] [resource]
script = ExtResource("1_3yq0a") script = ExtResource("1_3yq0a")
Speed = 3.0 Speed = 6.0
Acceleration = 5.0 Acceleration = 8.0
TargetHeight = 10.0 TargetHeight = 8.0
metadata/_custom_type_script = "uid://dtpxijlnb2c5" metadata/_custom_type_script = "uid://dtpxijlnb2c5"