오늘은 타일 이미지를 동적으로 변환하기 위해 타일 맵에 대해서 공부해봤다.
1. 활성화 돼 있는 타일맵 좌표 가져오기
private List<Vector3Int> GetTilesPosList(Tilemap tileMap)
{
var bounds = tileMap.cellBounds;
var tilesPosList = new List<Vector3Int>();
for (var x = bounds.xMin; x < bounds.xMax; x++)
{
for (var y = bounds.yMin; y < bounds.yMax; y++)
{
var cellPos = new Vector3Int(x, y, 0);
if (tileMap.HasTile(cellPos))
{
tilesPosList.Add(cellPos);
}
}
}
return tilesPosList;
}
- cellBounds
Tilemap이 포함하는 셀들의 경계(최소 및 최대 x, y 값)를 가져 온다. - 타일 존재 여부 확인:
tileMap.HasTile(cellPos)를 사용하여 해당 셀에 타일이 존재하는지 확인합니다.
2. 스크립트에서 타일의 이미지를 변경 하기
[SerializeField] private TileBase[] groundBase; //Tile Image를 저장
//좌표에 있는 타일의 이미지를 TileBase를 통해 변경
private void TileMapRendererModify(string theme)
{
groundObjectPos = GetTilesPosList(groundTileMap);
foreach (var ground in groundObjectPos)
{
groundTileMap.SetTile(ground, groundBase[3]);
}
}
- TileBase 배열 활용:
TileBase 배열(groundBase)에 타일 이미지를 보 - SetTile 사용:
TileMap.SetTile()를 호출하여 특정 좌표에 다른 타일 이미지를 설정
예시 코드에서는 groundBase[3]을 사용하여 타일을 설정해줌!
'내일배움캠프' 카테고리의 다른 글
내일배움캠프: GetInstanceID (0) | 2024.12.09 |
---|---|
내일배움캠프: Cinemachine Follow 기능 사용 중 캐릭터 떨림 (1) | 2024.12.06 |
내일배움캠프: Unity Pool (1) | 2024.12.03 |
내일배움캠프: 유니티 Conditional을 활용한 분기 (0) | 2024.12.02 |
내일배움캠프: RenderTexture를 활용한 UI (2) | 2024.11.29 |