Topic was automatically imported from the old Question2Answer platform.
Asked By
codaholic
Hi! I’m making a space invasion type of game, and in it i have an enemy spawner and a pause button/system. The pause system works, but it only pauses 2D physics and input events, which doesnt stop the enemies from spawning.
This is my spawner script:
func _ready():
var rand = RandomNumberGenerator.new()
var enemyalien = load("res://mobs/alienyellow.tscn")
var screen_size = get_viewport().get_visible_rect().size
var time = true
var tic = 1
for i in range(0, 100000):
var alien = enemyalien.instance()
rand.randomize()
var x = rand.randf_range(0+16, screen_size.x-16)
var y = -39
alien.position.x = x
alien.position.y = y
add_child(alien)
time = false
yield(get_tree().create_timer(rand_range(1, 2)), "timeout")
time = true
As you can see,it’s in the " _ready(): " function
This is the pause button script:
func _input(event):
if Input.is_key_pressed(KEY_P):
$Background.visible = !$Background.visible
get_tree().paused = !get_tree().paused
My question is, when the P button is pressed,how can i stop the enemies from spawning as well? I hope that i gave enough information and that i explained the problem successfully!
you could make a seperate function that does the spawning and put the function inside ready. then declare a variable under extends and call it is_paused = false then put a condition inside your spawn function that only runs while is_paused == false then on your input event modify is_paused = true
var is_paused = false
func _ready():
spawn()
func spawn():
if is_paused == false:
your spawn method
func _input(event):
if Input.is_key_pressed(KEY_P):
enemy_spawn.is_paused = true
something like that should work and i think you should be using event.is_key_pressed over Input i feel that is doubling up on what you are doing i could be wrong there but either way if you are not calling event you should put an underscore in front of it _event
sir306 | 2021-07-05 05:22
i think as well you can put
enemy_spawn.is_paused = not enemy.is_paused
and this should flip the condition so should work to unpause i believe but i haven’t tested this
sir306 | 2021-07-05 05:32
Well,my code is more organized after i tried this,it didnt work,but still,thank you for your answer.
I’ll probably think of a completely new way to spawn the enemies.