Organization of Game Files

Created folder for C# files, player, and enemy so it's a little cleaner...
This commit is contained in:
Iazubi
2024-10-23 17:28:44 -07:00
parent 9494eb1e34
commit 0a4d0e9c86
47 changed files with 32 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
using System.Collections.Generic;
using UnityEngine;
public class BackgroundTiler : MonoBehaviour
{
public GameObject tilePrefab; // The background tile prefab
public Transform player; // The player object to track
public int tileSize = 10; // Size of each tile (assuming square tiles)
public int renderDistance = 3; // Number of tiles to render around the player
private Vector2Int previousTile; // Tracks the last tile position
private Dictionary<Vector2Int, GameObject> activeTiles = new Dictionary<Vector2Int, GameObject>();
void Start()
{
UpdateTiles(); // Generate initial tiles
}
void Update()
{
Vector2Int currentTile = GetTilePosition(player.position);
if (currentTile != previousTile)
{
previousTile = currentTile;
UpdateTiles();
}
}
Vector2Int GetTilePosition(Vector3 position)
{
return new Vector2Int(Mathf.FloorToInt(position.x / tileSize), Mathf.FloorToInt(position.y / tileSize));
}
void UpdateTiles()
{
Vector2Int currentTile = GetTilePosition(player.position);
// Remove tiles that are out of range
List<Vector2Int> tilesToRemove = new List<Vector2Int>();
foreach (var tile in activeTiles)
{
if (Mathf.Abs(tile.Key.x - currentTile.x) > renderDistance || Mathf.Abs(tile.Key.y - currentTile.y) > renderDistance)
{
tilesToRemove.Add(tile.Key);
}
}
foreach (var tile in tilesToRemove)
{
Destroy(activeTiles[tile]);
activeTiles.Remove(tile);
}
// Add new tiles around the player
for (int x = -renderDistance; x <= renderDistance; x++)
{
for (int y = -renderDistance; y <= renderDistance; y++)
{
Vector2Int tilePos = new Vector2Int(currentTile.x + x, currentTile.y + y);
if (!activeTiles.ContainsKey(tilePos))
{
Vector3 tilePosition = new Vector3(tilePos.x * tileSize, tilePos.y * tileSize, 0);
GameObject newTile = Instantiate(tilePrefab, tilePosition, Quaternion.identity);
activeTiles.Add(tilePos, newTile);
}
}
}
}
}