ape-ame/Spawner.gd
2024-04-22 07:51:43 -04:00

39 lines
1.1 KiB
GDScript

extends Marker2D
@export var item: PackedScene
var portal = preload("res://portal.tscn")
@export var portal_texture: SpriteFrames
@export var random_off_screen = false
@export var radius = 100
func spawn():
if get_tree().paused:
return
var spawn_loc = Vector2.ZERO
if random_off_screen:
var random = randi_range(1, 4)
if random == 1:
spawn_loc = Vector2(-50, 1080 * randf())
elif random == 2:
spawn_loc = Vector2(1950, 1080 * randf())
elif random == 3:
spawn_loc = Vector2(1920 * randf(), -50)
elif random == 4:
spawn_loc = Vector2(1920 * randf(), 1080 + 50)
for i in range(10):
var test_pos = Vector2(randf(), randf()) * Vector2(1920, 1080)
if not $"../CollisionCheck".is_clear(test_pos, radius):
continue
spawn_loc = test_pos
break
var portal_effect = portal.instantiate()
portal_effect.global_position = spawn_loc
portal_effect.sprite_frames = portal_texture
$/root/Node2D.add_child(portal_effect)
await get_tree().create_timer(0.6).timeout
var node = item.instantiate()
node.global_position = spawn_loc
node.rotation_degrees = 360 * randf()
$/root/Node2D.add_child(node)