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.