Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Mischa |
I want to make a placement system reminiscent of mario karts or forza horizon’s placement system (ex. 1st, 2nd, 3rd, etc). It’s for my 2d multiplayer platformer.
Do you have any Idea on what would accomplish this and what I’m doing wrong?
If you need any additional information please feel free to ask.
@rpc("call_local")
func get_placement():
var players : Array = []
var placement : Array = []
var playerCount = 0
var currentPlayerPosition = Vector2.ZERO
for i in get_children():
if i is Player:
var player = i as Player
if player.is_running:
players.append(player)
playerCount += 1
if player == self: # Store current player's position
currentPlayerPosition = player.global_position
placement.resize(playerCount)
for i in range(playerCount):
placement[i] = players[i].global_position.distance_to(current_goal)
var sortedPlacement = placement.duplicate()
sortedPlacement.sort()
var myPlacement = -1
for i in range(playerCount):
if is_close_enough(currentPlayerPosition.distance_to(current_goal), sortedPlacement[i]):
myPlacement = i
break
if myPlacement != -1:
$CanvasLayer/Placement.text = str(myPlacement + 1)
else:
$CanvasLayer/Placement.text = ""
func is_close_enough(a: float, b: float, tolerance: float = 0.001) -> bool:
return abs(a - b) <= tolerance
Project file if needed.
Mischa | 2023-05-21 00:36