+1 vote

My code looks like this:

onready var amount = 20
onready var coin = preload("res://coin.tscn").instance()

func _drop():

        for i in range(amount):
            amount -= 1
            get_parent().add_child(coin)
            print("coin")

    pass

When this func is executed, it prints "coin" 20 times, but only add one child instance.

What do I have to do to add 20 children?

Thank you.

asked May 11 in Engine by gubbebubbe (26 points)

1 Answer

+1 vote
Best answer

Try this: (untested)

onready var amount = 20
onready var coin = preload("res://coin.tscn")

func _drop():

        for i in range(amount):
            var new_coin = coin.instance()
            get_parent().add_child(new_coin)
            print("coin: ", new_coin.name)
            # the nodename might help to debug

    pass

I dont think you want to decrease amount in the loop. This will probaly give you bugs, if you use _drop() a second time.

I'm also not sure, if you need "onready" for these variables.

answered May 11 by whiteshampoo (976 points)
selected May 11 by gubbebubbe

It worked. Thank you!

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read How to use this Q&A? before posting your first questions.