유니티 Tilemap Script example 1

2022. 7. 31. 15:11유니티정보

반응형

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