41 lines
1.0 KiB
GDScript
41 lines
1.0 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()
|