SetTile ( Vector3Int position, TileBase tile )
셀의 지정된 XYZ 좌표에 할당한 타일을 그리는 함수로 부동 소수점의 정밀도가 필요하지 백터인트를 사용합니다.
SetTile Example Script
public class TileController : MonoBehaviour
{
public Tilemap tilemap;
public TileBase tileBase;
void Start()
{
for (int i = -5; i < 5; i++) {
for (int k = -5; k < 5; k++) {
tilemap.SetTile(new Vector3Int(i,k,0), tileBase);
}
}
}
}
팔레트에서 생성한 바닥 모양의 Tile을 스크립트를 통해 tileBase변수에 할당하고Tilemap에 (-5,-5) ~ (5, 5) 만큼 for문을 활용하여 타일을 그리는 심플한 예제입니다.
위와 같은 방식을 응용하여 게임 시작 전에 맵에 포함되는 타일들을 생성하는 용도로 사용이 가능합니다.
※ 미리 타일을 그려놓은 맵에 캐릭터를 로딩하는 방식도 존재하지만 캐릭터가 상호작용을 통해 추가되는 타일을 표현할 때 사용하셔도 좋을 거 같습니다.
SwapTile(TileBase changeTile, TileBase newTile)
모든 기존 타일을 newTile로 교체하고 교체된 모든 타일을 새로 고칩니다.
SetTile Example Script
public class SwapTileExample : MonoBehaviour
{
public Tilemap tilemap;
public TileBase swapTileBaseA;
public TileBase swapTileBaseB;
void Update()
{
if(Input.GetKeyDown(KeyCode.Q)) {
tilemap.SwapTile(swapTileBaseA, swapTileBaseB);
}
if (Input.GetKeyDown(KeyCode.W)) {
tilemap.SwapTile(swapTileBaseB, swapTileBaseA);
}
}
}
미리 그려져있는 타일에서 키 입력을 받아 타일을 스왑 하여 문이 열리고 닫히는 표현을 하는 간단한 예제입니다.
※ 위의 방식은 간단한 예제를 위해 키 입력만으로 타일을 스왑 하였지만 실제로는 캐릭터가 조건을 만족한 상태에서의 특정 행동을 통해 상호작용하여 위와 같은 표현을 하는 것이 좋습니다.
GetTile(Vector3Int position);
타일 맵에서 셀의 지정된 XYZ 좌표의 타일을 가져옵니다.
GetTile Example Script
public Tilemap tilemap;
public TileBase tileBase;
void Update() {
if (Input.GetKeyDown(KeyCode.Q)) {
tilemap.SwapTile(tilemap.GetTile(new Vector3Int(0, 0, 0)), tileBase);
}
}
}
Q키를 입력받고 GetTile 메서드가 실행되면 0,0,0 위치에 있는 타일을 할당한 타일로 스왑 하는 예제입니다.
※ 2번째 예제에선 고정된 2개의 타일을 스왑하였지만 이번 예제는 특정 위치의 타일을 변경시키는 차이점이 있습니다.
즉 해당 위치의 타일이 계속 변경된다면 스왑대상이 고정적이지 않게 됩니다.
'유니티정보' 카테고리의 다른 글
유니티 GetAxis GetAxisRaw 차이 (0) | 2022.08.24 |
---|---|
유니티 Tilemap Script example 2 (0) | 2022.08.01 |
Unity Ads 관련 문제 체크해보기 (0) | 2022.05.09 |
유니티 Rigidbody 알아보기 (0) | 2022.02.22 |
유니티 Button 알아보기 (0) | 2022.02.07 |