Array with Objects sorting by distance to player

I don’t understand much what did you mean, but I will post out the code:

extends Area2D

@onready var shape_pos := $CollisionShape2D
var home_pos: Vector2 # Position of CollisionShape
var distance: float

func get_area_intersect() -> void:
	var area_array := get_overlapping_bodies() #Create Array of bodys
	home_pos = shape_pos.global_position #get position of players Attack shape

	if area_array:
		area_array.sort_custom(the_distance_sorter)

		for target in area_array:
			distance = target.position.distance_to(home_pos)
			print(target.name, "- ", round(distance))

func the_distance_sorter(a, b) -> bool:
	if a.position.distance_squared_to(home_pos) < b.position.distance_squared_to(home_pos):
		return true
	return false

this should print out a sorted array

2 Likes