Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Samomba |
Can someone help a newbie out? My game is crashing after a few shots because of this code. I have a timer node named “shot_timer” set to autostart and 1 second.
func _on_timer_timeout():
var times = [1,2,3]
var shots = 0
var cooldown = rand_range(1,3)
while shots!= times[randi() % times.size()]:
var laser = scn_laser.instance()
laser.set_position($cannon.get_global_position())
get_tree().get_root().call_deferred("add_child",laser)
AudioPlayer.play_sample("laser_enemy")
$shot_timer.set_wait_time(cooldown)
shots += 1
I have been using yields with one shot timers, but was getting errors and was told to use timers instead. Thought they would be easier to use…
Thanks in advance.
Can you elaborate on your desired behavior? It’s a little hard to tell what you want to do with just your code. while
statements have a knack for locking up the app in undesired ways. Sometimes when I write while
and that happens, I find that if
statements suffice.
DDoop | 2020-07-19 19:53
This code is used to have the enemy ship (in a space shooter game) shoot at slightly random intervals a slightly random number of times.
The “while loop” is there because the function is used only once.
I wonder if I could use if and restart the timer… Gonna try that instead.
Samomba | 2020-07-19 20:19
Thanks for the help. You were extremely helpful.
Samomba | 2020-07-19 20:30