for body in $Area2D.get_overlapping_bodies():
or
for body in $Area2D.get_overlapping_areas():
Sprite (Item) (item.gd)
Area2D
CollisionShape2D
tool
extends Sprite
export (String) var item_name
export (int) var item_quantity = 1
func pickup(item):
# warning-ignore:return_value_discarded
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
if body.name == "Player":
body.add_item(item_name,item_quantity)
queue_free()
KinematicBody (Player) (player.gd)
Area2D
CollisionShape2D
var inventory:Dictionary = {}
func add_item(name,quantity):
if inventory.has(name):
inventory[name] += quantity
else:
inventory[name] = quantity
Sprite (Item) (item.gd)
Area2D
CollisionShape2D
tool
extends Sprite
export (String) var item_name
export (int) var item_quantity = 1
func _ready():
add_to_group("items")
KinematicBody (Player) (player.gd)
Area2D
CollisionShape2D
var inventory:Dictionary = {}
func add_item(name,quantity):
if inventory.has(name):
inventory[name] += quantity
else:
inventory[name] = quantity
func _unhandled_input(event):
if (event.is_action_pressed("pickup")):
pickup()
func pickup():
for body in $Area2D.get_overlapping_areas():
if body.get_parent().is_in_group("items"):
var name = body.get_parent().item_name
var quantity = body.get_parent().item_quantity
add_item(name,quantity)
body.get_parent().queue_free()