godot-ci/test-project/scripts/EnemyGenerator.gd
Antonio Dell'Annunziata 79e2014976
Some checks are pending
godot-ci export / Windows Export (push) Waiting to run
godot-ci export / Linux Export (push) Waiting to run
godot-ci export / Web Export (push) Waiting to run
godot-ci export / Mac Export (push) Waiting to run
Adapt to forgejo
2025-03-02 11:36:40 +01:00

40 lines
1 KiB
GDScript

extends Node2D
@onready var EnemyScene: PackedScene = preload("res://scenes/Projectile.tscn")
signal start
signal stop
var Enemy
func _ready():
self.setup_enemy()
self.emit_signal("stop")
func setup_enemy() -> void:
self.Enemy = EnemyScene.instantiate()
Enemy.setup(GLOBAL.SpriteType.MISSILE, GLOBAL.MISSILE_SPEED["max"])
func spawn_and_shoot_enemy() -> void:
var Duplicate = Enemy.duplicate(Node.DUPLICATE_USE_INSTANTIATION)
Duplicate.set_random_color()
Duplicate.update_collision_layer()
$Enemies.add_child(Duplicate)
$SpawnArea/SpawnLocation.set_h_offset(randi())
Duplicate.global_position = $SpawnArea/SpawnLocation.position
var direction: Vector2 = (Vector2(0, 1080) - Duplicate.global_position).normalized()
var angle: float = Vector2(1, 0).angle_to(direction)
Duplicate.rotation = angle
Duplicate.shoot_missile(direction)
# --- Signals ---
func _on_SpawnTimer_timeout():
self.spawn_and_shoot_enemy()
func _on_EnemyGenerator_start():
$SpawnTimer.start()
func _on_EnemyGenerator_stop():
$SpawnTimer.stop()