Projext/Assets/00001.Scripts/Simple Random Walk Generator.cs

52 lines
1.4 KiB
C#
Raw Normal View History

2026-02-22 13:37:34 +00:00
using UnityEngine;
using System.Collections.Generic;
public class SimpleMapGenerator : MonoBehaviour
{
public GameObject tilePrefab; // <20><>ġ<EFBFBD><C4A1> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public int totalTiles = 500; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Ÿ<><C5B8> <20><>
public float tileSize = 1.0f; // Ÿ<><C5B8> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void Start()
{
GenerateMap();
}
void GenerateMap()
{
// <20>ߺ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD>
HashSet<Vector2Int> floorPositions = new HashSet<Vector2Int>();
Vector2Int currentPos = Vector2Int.zero; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (0, 0)
floorPositions.Add(currentPos);
for (int i = 0; i < totalTiles; i++)
{
// <20><><EFBFBD><EFBFBD><EFBFBD>¿<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
currentPos += GetRandomDirection();
// <20><><EFBFBD>ο<EFBFBD> <20><>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20>߰<EFBFBD>
if (!floorPositions.Contains(currentPos))
{
floorPositions.Add(currentPos);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ġ<EFBFBD><C4A1> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD>
foreach (var pos in floorPositions)
{
Instantiate(tilePrefab, new Vector3(pos.x * tileSize, 0, pos.y * tileSize), Quaternion.identity, transform);
}
}
Vector2Int GetRandomDirection()
{
Vector2Int[] directions = {
Vector2Int.up,
Vector2Int.down,
Vector2Int.left,
Vector2Int.right
};
return directions[Random.Range(0, directions.Length)];
}
}