현재 완성 진행 상황
-과정-
맵 추가생성
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilmapVisualizer : MonoBehaviour
{
[SerializeField]
private Tilemap flootTilemap;
[SerializeField]
private TileBase floorTile;
public void PaintFloorTiles(IEnumerable<Vector2Int> floorPositions)
{
PaintTiles(floorPositions, flootTilemap, floorTile);
}
private void PaintTiles(IEnumerable<Vector2Int> Positions, Tilemap Tilemap, TileBase Tile)
{
foreach(var position in Positions)
{
PaintSingleTile(Tilemap, Tile, position);
}
}
private void PaintSingleTile(Tilemap tilemap, TileBase tile, Vector2Int position)
{
var tilePosition = tilemap.WorldToCell((Vector3Int)position);
tilemap.SetTile(tilePosition, tile);
}
}
맵 랜덤 생성
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
public class TilemapVisualizer : MonoBehaviour
{
[SerializeField]
private Tilemap floorTilemap;
[SerializeField]
private TileBase floorTile;
public void PaintFloorTiles(IEnumerable<Vector2Int> floorPositions)
{
PaintTiles(floorPositions, floorTilemap, floorTile);
}
private void PaintTiles(IEnumerable<Vector2Int> positions, Tilemap tilemap, TileBase tile)
{
foreach(var position in positions)
{
PaintSingleTile(tilemap, tile, position);
}
}
private void PaintSingleTile(Tilemap tilemap, TileBase tile, Vector2Int position)
{
var tilePosition = tilemap.WorldToCell((Vector3Int)position);
tilemap.SetTile(tilePosition, tile);
}
public void Clear()
{
floorTilemap.ClearAllTiles();
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Random = UnityEngine.Random;
public class SimpleRandomWalkDungeonGenerator : MonoBehaviour
{
[SerializeField]
protected Vector2Int startPosition = Vector2Int.zero;
[SerializeField]
private int iterations = 10;
[SerializeField]
public int walkLenght = 10;
[SerializeField]
public bool startRandomlyEachIteraction = true;
[SerializeField]
private TilemapVisualizer tilemapVisualizer;
public void RunProceduralGeneration()
{
HashSet<Vector2Int> floorPositions = RunRandomWalk();
tilemapVisualizer.Clear();
tilemapVisualizer.PaintFloorTiles(floorPositions);
}
protected HashSet<Vector2Int> RunRandomWalk()
{
var currentPosition = startPosition;
HashSet<Vector2Int> floorPositions = new HashSet<Vector2Int>();
for (int i = 0; i < iterations; i++)
{
var path = ProceduralGenerationAlgorithms.SimpleRandomWalk(currentPosition, walkLenght);
floorPositions.UnionWith(path);
if (startRandomlyEachIteraction)
currentPosition = floorPositions.ElementAt(Random.Range(0, floorPositions.Count));
}
return floorPositions;
}
}
인스펙터
'Project T > 진행' 카테고리의 다른 글
[팀 프로젝트] - 랜덤 워크와 이진 공간 분할 알고리즘(맵 생성5) (0) | 2021.12.02 |
---|---|
[팀 프로젝트] - 랜덤 워크와 이진 공간 분할 알고리즘(맵 생성4) (0) | 2021.12.01 |
[팀 프로젝트] - 랜덤 워크와 이진 공간 분할 알고리즘(맵 생성2) (0) | 2021.11.29 |
[팀 프로젝트] - 랜덤 워크와 이진 공간 분할 알고리즘(맵 생성) (0) | 2021.11.26 |
[팀 프로젝트] - 랜덤 워크와 이진 공간 분할 알고리즘 맵(셋팅) (0) | 2021.11.26 |