game: add enemy manager
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
[ext_resource type="PackedScene" uid="uid://4xha2nhf8fya" path="res://scenes/test_level.tscn" id="1_o5qli"]
|
[ext_resource type="PackedScene" uid="uid://4xha2nhf8fya" path="res://scenes/test_level.tscn" id="1_o5qli"]
|
||||||
[ext_resource type="PackedScene" uid="uid://ca2so8fm3q8fe" path="res://scenes/player.tscn" id="2_0wfyh"]
|
[ext_resource type="PackedScene" uid="uid://ca2so8fm3q8fe" path="res://scenes/player.tscn" id="2_0wfyh"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b18uib08hvdpq" path="res://scenes/managers/main_ui.tscn" id="3_sugp2"]
|
[ext_resource type="PackedScene" uid="uid://b18uib08hvdpq" path="res://scenes/managers/main_ui.tscn" id="3_sugp2"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bn8c0cgecvjxl" path="res://scenes/enemies/enemy.tscn" id="5_tbgi4"]
|
[ext_resource type="PackedScene" uid="uid://dy73qrxcgrwg3" path="res://scenes/managers/enemy_manager.tscn" id="5_tbgi4"]
|
||||||
|
|
||||||
[node name="Main" type="Node2D"]
|
[node name="Main" type="Node2D"]
|
||||||
script = ExtResource("1_jyhfs")
|
script = ExtResource("1_jyhfs")
|
||||||
@@ -22,5 +22,5 @@ position = Vector2(1057, 798)
|
|||||||
camera = NodePath("../MainCamera")
|
camera = NodePath("../MainCamera")
|
||||||
main_ui = NodePath("../MainUI")
|
main_ui = NodePath("../MainUI")
|
||||||
|
|
||||||
[node name="Enemy" parent="." node_paths=PackedStringArray("target") instance=ExtResource("5_tbgi4")]
|
[node name="EnemyManager" parent="." node_paths=PackedStringArray("target") instance=ExtResource("5_tbgi4")]
|
||||||
target = NodePath("../Player")
|
target = NodePath("../Player")
|
||||||
|
24
scenes/managers/enemy_manager.gd
Normal file
24
scenes/managers/enemy_manager.gd
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
class_name EnemyManager
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
@export var max_enemies: int
|
||||||
|
@export var spawn_rate: float
|
||||||
|
@export var target: CollisionObject2D
|
||||||
|
|
||||||
|
@onready var timer: Timer = $Timer
|
||||||
|
|
||||||
|
var enemy_scene = preload("res://scenes/enemies/enemy.tscn")
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
timer.wait_time = spawn_rate / 1
|
||||||
|
timer.start()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_timer_timeout() -> void:
|
||||||
|
var enemies = get_tree().get_nodes_in_group(GlobalConst.GROUP_ENEMY)
|
||||||
|
GlobalConst.sig_debug_stats_set.emit("enemy_count", "%s" % len(enemies))
|
||||||
|
if len(enemies) < max_enemies:
|
||||||
|
var new_enemy = enemy_scene.instantiate()
|
||||||
|
new_enemy.position = target.position + Vector2(50, 50)
|
||||||
|
new_enemy.target = target
|
||||||
|
add_child(new_enemy)
|
1
scenes/managers/enemy_manager.gd.uid
Normal file
1
scenes/managers/enemy_manager.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://bccq4dt00s2ej
|
12
scenes/managers/enemy_manager.tscn
Normal file
12
scenes/managers/enemy_manager.tscn
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dy73qrxcgrwg3"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bccq4dt00s2ej" path="res://scenes/managers/enemy_manager.gd" id="1_tfsap"]
|
||||||
|
|
||||||
|
[node name="EnemyManager" type="Node2D"]
|
||||||
|
script = ExtResource("1_tfsap")
|
||||||
|
max_enemies = 50
|
||||||
|
spawn_rate = 1.0
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="."]
|
||||||
|
|
||||||
|
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
|
Reference in New Issue
Block a user