public void CarThroughCheckpoint(CheckpointSingle checkpointSingle, Transform carTransfrom)
    {
        int nextCheckpointSingleIndex = nextCheckpointSingleIndexList[carTransformList.IndexOf(carTransfrom)];

        if (checkpointSingleList.IndexOf(checkpointSingle) == nextCheckpointSingleIndex)
        {
            CheckpointSingle correctCheckpointSingle = checkpointSingleList[nextCheckpointSingleIndex];
            nextCheckpointSingleIndexList[carTransformList.IndexOf(carTransfrom)] = (nextCheckpointSingleIndex + 1) % checkpointSingleList.Count;
            OnPlayerCorrectCheckpoint?.Invoke(this, EventArgs.Empty);
        }
        else
        {
            OnPlayerWrongCheckpoint?.Invoke(this, EventArgs.Empty);
        }
    }
 public void PlayerThroughCheckpoint(CheckpointSingle checkpointSingle, Transform playerTransform)
 {
     if (checkpointSingleList.IndexOf(checkpointSingle) == nextCheckpointIndex)
     {
         nextCheckpointIndex = (nextCheckpointIndex + 1) % checkpointSingleList.Count;
         OnPlayerCorrectCheckpoint?.Invoke(this, new CarCheckpointEventArgs {
             carTransform = playerTransform
         });
     }
     else
     {
         OnPlayerWrongCheckpoint?.Invoke(this, new CarCheckpointEventArgs {
             carTransform = playerTransform
         });
     }
 }