Godot Version
4.3
Question
Hello, anyone can help me? i’m making a interactions function, i’ve crated a interaction area and a interaction manager, but i can interact from anywhere on the map and if i put two objects to interact the game crashes every time
My codes is down bellow:
Interaction_area.gd:
extends Node2D
@onready var player = get_tree().get_first_node_in_group(“player”)
@export var max_interaction_distance: float = 100.0 # Distância máxima permitida para interação
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: float) → void:
if active_areas.size() > 0 && can_interact:
active_areas.sort_custom(_sort_by_distance_to_player)
print(“pode interagir”)
else:
print(“não pode”)
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(“ui_interact”) && can_interact:
if active_areas.size() > 0:
can_interact = false
await active_areas[0].interact.call()
can_interact = true
interaction_manager.gd:
extends Area2D
class_name InteractionArea
@export var action_name: String = “interact”
var interact: Callable = func():
pass
func _on_body_entered(body):
InteractionManager.register_area(self)
func _on_body_exited(body):
InteractionManager.unregister_area(self)