57 lines
1.4 KiB
GDScript
57 lines
1.4 KiB
GDScript
extends Control
|
|
|
|
var up_left
|
|
var down_right
|
|
var up_right
|
|
var down_left
|
|
var viewport_rect
|
|
|
|
func _ready() -> void:
|
|
var camera: Camera2D = get_parent().get_node("Camera2D")
|
|
var viewport_size = get_viewport_rect().size
|
|
var world_size = viewport_size / camera.zoom
|
|
var world_origin = camera.global_position # anchor_mode = 0 → top-left corner
|
|
|
|
up_left = world_origin
|
|
down_right = world_origin + world_size
|
|
up_right = Vector2(down_right.x, up_left.y)
|
|
down_left = Vector2(up_left.x, down_right.y)
|
|
|
|
func get_spawn_position() -> Vector2:
|
|
var side = randi() % 4
|
|
var spawn_x
|
|
var spawn_y
|
|
if side == 0:
|
|
# oben
|
|
spawn_x = randf_range(up_left.x, up_right.x)
|
|
spawn_y = up_left.y
|
|
elif side == 1:
|
|
# rechts
|
|
spawn_x = up_right.x
|
|
spawn_y = randf_range(up_right.y, down_right.y)
|
|
elif side == 2:
|
|
#unten
|
|
spawn_x = randf_range(up_left.x, up_right.x)
|
|
spawn_y = down_left.y
|
|
elif side == 3:
|
|
#links
|
|
spawn_x = up_left.x
|
|
spawn_y = randf_range(up_right.y, down_right.y)
|
|
return Vector2(spawn_x, spawn_y)
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(delta: float) -> void:
|
|
|
|
pass
|
|
|
|
func spawn_enemy() -> void:
|
|
var enemy_scene = preload("res://scenes/slime.tscn")
|
|
var enemy = enemy_scene.instantiate()
|
|
enemy.global_position = get_spawn_position()
|
|
add_child(enemy)
|
|
pass
|
|
|
|
|
|
func _on_spawn_timer_timeout() -> void:
|
|
spawn_enemy()
|
|
pass # Replace with function body.
|