|
|
|
|
Attention |
Topic was automatically imported from the old Question2Answer platform. |
|
Asked By |
Nick888 |
Let’s suppose that we have the following code:
extends Node2D
var SPAWN_TIME=2
var spawn_time_left: float=SPAWN_TIME
func spawn_item():
var new_Baby=load("res://spawneritem.tscn")
var ins=new_Baby.instance()
add_child(ins)
func spawn_item2():
var new_Baby2=load("res://spawneritem2D.tscn")
var ins2=new_Baby2.instance()
add_child(ins2)
func _process(delta):
if spawn_time_left<.0:
spawn_item()
spawn_item2()
spawn_time_left=SPAWN_TIME
else:
spawn_time_left -=delta
Obviously ,with the above code, i create together two objects every 2 seconds.
If I want the Baby for example to be created in 2 seconds but the Baby2 to be created in 1 second, what i can to do?I have to create a second timer or something?
Thank you.
|
|
|
|
Reply From: |
wombatstampede |
You’re actually not using a “Timer” at the moment while what you’re doing isn’t wrong.
If you want to keep it this way then just add a newspan_time_left2
variable and handle it like the first variable (in a separateif
clause) just assigning a differentSPAWN_TIME
.
You could however also use two Timer
nodes instead. With different wait times which trigger the spawn_item
in their two timeout event handlers.
Thank you very much!
Nick888 | 2019-06-06 10:39
|
|
|
|
Reply From: |
Thomas Karcher |
Yes, having two timers would probably be the best way to do it, but I’d rather use Timer objects instead of simulating these timers in the _process function. This way, it’s easier to start and stop them as needed and to add more timers with just one line of code:
func _ready():
var t1 = create_spawn_timer ("spawn_item", 2)
var t2 = create_spawn_timer ("spawn_item2", 1)
func create_spawn_timer (spawn_func, spawn_time) -> Timer:
var timer = Timer.new()
add_child (timer)
timer.set_wait_time (spawn_time)
timer.connect("timeout", self, spawn_func)
timer.start()
return timer
Thank you very much!
Nick888 | 2019-06-06 10:39