How to make endless 2D map in every direction

With the script I got, I can go to the right and it will never end, I can go up and it’ll be endless too etc. but when I go somewhere and try to change direction, it’s not working.

using System.Collections.Generic;
using System.Collections;
using UnityEngine;

public class LevelGenerator : MonoBehaviour
{

    private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 100f;

    [SerializeField] private Transform levelPart_Start;
    [SerializeField] private List<Transform> levelPartList;
    [SerializeField] private Transform player;

    
    private Vector3 lastRightPosition;
    private Vector3 lastUpPosition;
    private Vector3 lastLeftPosition;
    private Vector3 lastDownPosition;
    private Vector3 playerPosition;

    private void Awake()
    {
        lastRightPosition = levelPart_Start.Find("RightPosition").position;
        lastUpPosition = levelPart_Start.Find("UpPosition").position;
        lastLeftPosition = levelPart_Start.Find("LeftPosition").position;
        lastDownPosition = levelPart_Start.Find("DownPosition").position;
    }

    private void Update()
    {
        playerPosition = player.Find("Player").position;

        if (Vector3.Distance(playerPosition, lastRightPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
        {
            SpawnLevelPartRight();
        }
        if (Vector3.Distance(playerPosition, lastUpPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
        {
            SpawnLevelPartUp();
        }
        if (Vector3.Distance(playerPosition, lastLeftPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
        {
            SpawnLevelPartLeft();
        }
        if (Vector3.Distance(playerPosition, lastDownPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
        {
            SpawnLevelPartDown();
        }
    }

    private void SpawnLevelPartRight()
    {
        Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)];
        Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastRightPosition);
        lastRightPosition = lastLevelPartTransform.Find("RightPosition").position;
    }
    private void SpawnLevelPartUp()
    {
        Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)];
        Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastUpPosition);
        lastUpPosition = lastLevelPartTransform.Find("UpPosition").position;
    }
    private void SpawnLevelPartLeft()
    {
        Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)];
        Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastLeftPosition);
        lastLeftPosition = lastLevelPartTransform.Find("LeftPosition").position;
    }
    private void SpawnLevelPartDown()
    {
        Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)];
        Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastDownPosition);
        lastDownPosition = lastLevelPartTransform.Find("DownPosition").position;
    }

    private Transform SpawnLevelPart(Transform levelPart, Vector3 spawnPosition)
    {
        Transform levelPartTransform = Instantiate(levelPart, spawnPosition, Quaternion.identity);
        return levelPartTransform;
    }
}

Hi

The problem is updating the last level position only in one direction when spawning a new level part. Last positions should be updated in every direction.

For example:

 private void SpawnLevelPartRight()
 {
     Transform chosenLevelPart = levelPartList[Random.Range(0, levelPartList.Count)];
     Transform lastLevelPartTransform = SpawnLevelPart(chosenLevelPart, lastRightPosition);

     lastRightPosition = lastLevelPartTransform.Find("RightPosition").position;
     lastUpPosition = lastLevelPartTransform.Find("UpPosition").position;
     lastLeftPosition = lastLevelPartTransform.Find("LeftPosition").position;
     lastDownPosition = lastLevelPartTransform.Find("DownPosition").position;
 }

I don’t know how the game design is (whether if player can move diagonal or vertical/horizontal only etc.) but diagonal movements of the player will still be a problem with this approach. I think this approach would fits better for games that levels flow in vertical-horizontal directions only.

Thank you, have a nice day.