From ad8af928065a506d0d28f98d51222d7afa1f47e2 Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Sat, 05 Apr 2025 14:55:22 +0000 Subject: [PATCH] #47 background rework (static with transitions) --- Assets/Scripts/Managers/GameManager.cs | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-) diff --git a/Assets/Scripts/Managers/GameManager.cs b/Assets/Scripts/Managers/GameManager.cs index 524a68a..7f543e9 100644 --- a/Assets/Scripts/Managers/GameManager.cs +++ b/Assets/Scripts/Managers/GameManager.cs @@ -27,6 +27,7 @@ public GameObject pickups; public Tilemap fogTilemap; public FogOfWar fogOfWar; + public GameObject backGroundPrefab; private void Awake() { @@ -47,6 +48,25 @@ } Debug.Log("waiting for async map loading"); StartCoroutine(generateTileMap.GenerateTiles(LoadTileMapsFinished, destroyedTiles)); + } + + private void InitializeBackgroundTiles() + { + GameObject tilesParent = new GameObject("BackgroundTiles"); + GameObject player = GameObject.FindGameObjectWithTag("Player"); + Vector3 backgroundPos = player.transform.position; + // Adjust the new position based on whether y is positive or negative + float colliderHeight = backGroundPrefab.GetComponent<BoxCollider2D>().size.y; + if (backgroundPos.y >= 0) + { + backgroundPos.y -= Mathf.Abs(backgroundPos.y) % colliderHeight; + } + else + { + backgroundPos.y += Mathf.Abs(backgroundPos.y) % colliderHeight; + } + + Instantiate(backGroundPrefab, (backgroundPos), Quaternion.identity, tilesParent.transform); } private void LoadMapState() @@ -71,6 +91,8 @@ { Debug.Log("done async map loading"); levelChanger.GetComponent<Animator>().SetBool("SceneLoading", false); + //Initialize background tiles after the tilemap is loaded + //InitializeBackgroundTiles(); GameLoaded(); } public void GameLoaded() @@ -144,7 +166,10 @@ cellCoord.x = cellCoord.x + 1; break; case DrillDirection.Down: - cellCoord.y = cellCoord.y - 1; + // Use player's center position for downward drilling + Vector3 playerCenter = contact.rigidbody.transform.position; + cellCoord = grid.WorldToCell(playerCenter); + cellCoord.y = grid.WorldToCell(contact.point).y - 1; // Keep the vertical position from contact point break; } -- Gitblit v1.9.3