grunk/src/world/world_item/world_item.gd

35 lines
785 B
GDScript3
Raw Normal View History

2025-03-21 12:07:05 -06:00
@tool
class_name WorldItem extends MeshInstance3D
## A collectable item in the world.
@export var item: Item:
set = _set_item
@export var interact_radius: float = 0.25:
set = _set_radius
@onready var interactive: Interactive = %Interactive
@onready var collision_shape_3d: CollisionShape3D = %CollisionShape3D
func _ready() -> void:
_set_item(item)
_set_radius(interact_radius)
func _set_item(value: Item) -> void:
item = value
if item and interactive:
interactive.label = item.name
func _set_radius(value: float) -> void:
interact_radius = value
if collision_shape_3d:
(collision_shape_3d.shape as SphereShape3D).radius = interact_radius
func _on_interactive_activated() -> void:
Player.instance.add_item(item)
# TODO: animation, sfx on collect?
queue_free()