Creating a delay in Godot

In our last tutorial, we learnt how to destroy a node during runtime. In this tutorial, we will include a delay timer to the script and destroy the object after the delay

The simplest way is to create a variable and subtract it with delta in the _process(). When the variable hits zero, destroy the object.

extends Spatial



var object_to_delete

var timer=10

func _ready():
	object_to_delete=get_node("../glass cube2")

func _process(delta):

	timer-=delta
	if timer<0 :
		if is_instance_valid(object_to_delete):
			print("Hello")
			object_to_delete.queue_free()

The second method is to use the yield statement with a timer

When the timer becomes zero it will execute the next statement.

extends Spatial



var object_to_delete

func _ready():
	object_to_delete=get_node("../glass cube2")
	yield(get_tree().create_timer(10),"timeout")
	if is_instance_valid(object_to_delete):

			object_to_delete.queue_free()

The yield statement creates a delay of 10 seconds using the timer we have created inside it. You can increase or decrease the timer value by changing the integer inside the create_timer() function.

Thats it for this tutorial. If you have any questions leave it in the comment section below.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from VionixStudio

Subscribe now to keep reading and get access to the full archive.

Continue reading