ape-ame/Spawner.gd

40 lines
1.1 KiB
GDScript3
Raw Normal View History

2024-04-16 20:29:45 -04:00
extends Marker2D
@export var item: PackedScene
2024-04-22 07:51:43 -04:00
var portal = preload("res://portal.tscn")
@export var portal_texture: SpriteFrames
2024-04-20 09:45:17 -04:00
@export var random_off_screen = false
2024-04-19 17:59:19 -04:00
@export var radius = 100
2024-04-16 20:29:45 -04:00
func spawn():
2024-04-17 15:00:20 -04:00
if get_tree().paused:
return
2024-04-20 09:45:17 -04:00
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)
2024-04-16 20:29:45 -04:00
for i in range(10):
var test_pos = Vector2(randf(), randf()) * Vector2(1920, 1080)
2024-04-19 17:59:19 -04:00
if not $"../CollisionCheck".is_clear(test_pos, radius):
2024-04-16 20:29:45 -04:00
continue
2024-04-20 09:45:17 -04:00
spawn_loc = test_pos
2024-04-16 20:29:45 -04:00
break
2024-04-20 09:45:17 -04:00
2024-04-22 07:51:43 -04:00
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
2024-04-20 09:45:17 -04:00
var node = item.instantiate()
node.global_position = spawn_loc
node.rotation_degrees = 360 * randf()
$/root/Node2D.add_child(node)