Hello, I currently am working on a 2D game where you can plant certain items (trees, flowers, etc) by clicking on the screen.
I already have figured out how to click and add one kind of item onto the screen via input mapping and instancing.
I am looking to take it one step further and add more options of items that you can plant, by clicking on the name of the item in a list (aka “selecting” it) and now whenever you click, you now plant the new item you currently have selected.
You should have a variable where you store what you want to spawn when clicking.
At first you can make a system where pressing a key changes the active item. e.g. when “2” is pressed you set item_to_spawn = “birch_tree”. Then you could have a dictionary of items where you store the items and scenes.
var items = {
"birch_tree": preload("res://birch_tree.tscn"),
"bush": preload("res://bush.tscn"),
# and so on
}
var item_to_spawn = "birch_tree"
func _process(delta):
if Input.is_action_just_pressed("1"):
item_to_spawn = "birch_tree"
elif Input.is_action_just_pressed("2"):
item_to_spawn = "bush"
# and so on
func spawn_item(position):
var item_instance = items[item_to_spawn].instantiate()
# set location etc
add_child(item_instance)
You can worry about building a UI for it later once you have the simpler version working