Error with label

Godot Version

4.6

Question

i continue to get "_process: Invalid assignment of property or key ‘global_position’ with value of type ‘Vector3’ on a base object of type ‘Label’.” for context i tried using a yt tutorial to make a interaction between a character and item

this the interaction manager

extends Node3D


@onready var player = get_tree().get_first_node_in_group("player")
@onready var _label = $Label


const base_text = "[E] to "


var active_areas = []
var can_interact = true


func register_area(area: InteractionArea):
	active_areas.push_back(area)


func unregister_area(area: InteractionArea):
	var index = active_areas.find(area)
	if index != -1:
		active_areas.remove_at(index)


func _process(delta):
	if active_areas.size() > 0 && can_interact:
		active_areas.sort_custom(_sort_by_distance_to_player)
		_label.text = base_text + active_areas[0].action_name
		_label.global_position = active_areas[0].global_position #error here
		_label.global_position.y -= 36
		_label.global_position.x -= _label.size.x / 2
		_label.show()
	else:
		_label.hide()


func _sort_by_distance_to_player(area1, area2):
	var area1_to_player = player.global_position.distance_to(area1.global_position)
	var area2_to_player = player.global_position.distance_to(area2.global_position)
	return area1_to_player < area2_to_player


func _input(event):
	if event.is_action_pressed("Interact") && can_interact:
		if active_areas.size() > 0:
			can_interact = false
			_label.hide()
			
			await active_areas[0].interact.call()
			
			can_interact = true

interaction area:

extends Area3D
class_name InteractionArea


@export var action_name: String = "pick up"


var interact: Callable = func():
	pass


func _on_body_entered(body: Node3D) -> void:
	InteractionManager.register_area(self)


func _on_body_exited(body: Node3D) -> void:
	InteractionManager.unregister_area(self)

You’re trying to assign a 3D position (Vector3) to a Label, which is a 2D element and has only 2D position (Vector2). This is illogical, hence the error.

1 Like

thank you

You’re welcome. Did that fix your problem?
If so, you can make my reply as a solution to the problem.