타일맵 에디터
타일맵은 레벨입니다. 내 이미지 하나의 타일로 칠한 칸의 그리드에, 코드가 읽는 태그와 그 위에 놓는 오브젝트(주인공의 시작 위치, 동전, 상자)가 있습니다. iPad와 Mac의 타일맵 에디터에서 열립니다.
타일맵 에디터 열기
파일에서 .tilemap을 고르면 바로 타일맵 에디터에서 열립니다. 새로 만들려면 **파일 › 새 에셋…**에서 타일맵을 고르세요(프로젝트 및 에셋 참고).
바에는 맵의 이름과 크기, 타일 크기, 확대 비율이 나옵니다. 타일 | 오브젝트로 편집할 레이어를 고릅니다(L). 그리드는 칸의 선을 보여 주고, 맵 설정에서 타일셋을 연결하고 맵 크기와 칸 크기를 바꿉니다.
타일 칠하기
타일 레이어에서는 옆 열에 타일셋이 나옵니다. 타일을 클릭해서 고르거나, 여러 타일을 드래그해 스탬프로 고릅니다. 도구는 캔버스 가장자리에 있고, 각각 단축키가 있습니다.
- 연필(B) — 고른 타일이나 스탬프를 칠합니다
- 지우개(E) — 칸을 비웁니다
- 채우기(G) — 같은 타일로 이어진 칸을 채웁니다
- 사각형(U) — 사각형을 채웁니다
- 스포이트(I) — 아래 타일이 칠할 타일이 됩니다
- 선택(M) — 칸을 선택해 옮기고, 잘라내고, 복사하고, 붙여 넣습니다
태그 칠하기(T)는 타일 대신 타일셋 아래에서 고른 태그를 칠하고, 태그 보기는 맵 위에 태그를 보여 줍니다. 코드는 map.hit(…)로 칸의 태그를 읽습니다. 예를 들어 벽은 태그 2입니다(충돌 참고).
오브젝트 레이어
오브젝트는 칸에 놓는 이름입니다. 주인공이 시작하는 곳, 한 줄의 동전, 상자 같은 것입니다. 바에서 오브젝트를 고르면(L) 배치할 수 있습니다. 옆 열은 오브젝트 팔레트가 되어, 프로젝트의 모든 스프라이트가 첫 프레임으로 그려지고 그 이름으로 나옵니다. 오브젝트의 이름은 스프라이트의 이름이고, 코드가 읽는 것도 이 이름입니다.
- 배치(B) — 팔레트에서 고른 스프라이트를 칸에 놓습니다. 드래그하면 지나간 칸마다 하나씩 놓습니다. 한 칸에는 오브젝트 하나: 이미 있는 칸에 놓으면 바뀝니다.
- 제거(E) — 아래 오브젝트를 제거합니다. 드래그하면 지나간 것을 모두 제거합니다.
- 집기(I) — 그 오브젝트의 이름이 배치할 이름이 됩니다.
- 선택(M) — 오브젝트를 클릭해 선택하고, ⇧-클릭으로 추가하거나, 빈 칸에서 드래그해 사각형 안의 오브젝트를 선택합니다. 선택한 오브젝트를 드래그하면 옮겨지고, 여러 개도 간격을 유지합니다. 화살표 키는 선택을 한 칸씩 옮깁니다.
오브젝트는 다른 오브젝트 위에 놓이지 않습니다. 오브젝트가 있는 칸으로 옮기면 거부되고, 오브젝트는 제자리로 돌아가며, 에디터가 그 칸에 무엇이 있는지 알려 줍니다. ⌥를 누르고 있으면 둘을 맞바꿉니다. 삭제, 잘라내기, 복사, 붙여넣기는 오브젝트에도 쓸 수 있습니다(붙여 넣은 묶음은 클릭할 때까지 포인터를 따라옵니다). 이름 보기(N)는 모든 이름을 보여 줍니다. 그렇지 않으면 오브젝트를 선택하거나 가리킬 때 이름이 나옵니다. 오브젝트 레이어에서는 채우기, 사각형, 태그 칠하기가 흐리게 표시됩니다.
타일 레이어에서 오브젝트는 40 %로 맵에 남아 있고, 클릭하면 오브젝트 아래의 타일을 칠할 뿐 오브젝트는 건드리지 않습니다.
이 맵에 있는 것은 이름별 오브젝트 수를 보여 주며, 이름을 클릭하면 모두 선택합니다. 맵을 오른쪽 클릭하면 레이어 메뉴가 열립니다.
종류
팔레트의 **새 종류…**는 스프라이트의 프레임에 따로 이름을 붙입니다. 예를 들어 슬라임 스프라이트의 두 번째 프레임으로 그리는 guard를 slime 옆에 둘 수 있습니다. 종류는 맵과 함께 저장되고, 팔레트에서 스프라이트 다음에 나옵니다.
파일에서 스프라이트 이름을 바꾸면, 프로젝트의 맵에 그 스프라이트로 그리는 오브젝트가 있을 때 오브젝트 3개의 이름도 변경할까요? 라고 묻습니다. 오브젝트 이름 변경은 모든 맵의 오브젝트와 그 스프라이트로 그리는 종류의 이름을 바꾸고, 실행 취소 한 번으로 새 이름과 오브젝트가 함께 돌아옵니다. 이름 유지는 그대로 둡니다. 스프라이트가 삭제되었거나 오브젝트 없이 이름이 바뀐 오브젝트는 이름을 그대로 두고, 같은 이름의 스프라이트나 종류가 다시 생길 때까지 점선으로 그려집니다.
iPad에서
탭하면 손가락을 뗀 곳에 오브젝트를 놓습니다. 선택으로 오브젝트를 드래그하면 옮겨집니다. 어떤 도구에서든 길게 누르면 오브젝트를 들어 올려 옮길 수 있고, 움직이지 않고 떼면 메뉴가 나옵니다. 오브젝트 레이어에서는 맵 위의 편집 캡슐에 삭제가 있습니다. 두 손가락은 이동과 확대/축소만 하고 아무것도 놓지 않습니다.
코드에서
map.things()는 오브젝트를 (name, row, column)으로 나열합니다.
level = world.spawn(map=GridMap(tilemap="level"))
for name, row, column in level.map.things():
if name == "coin":
place_coin(row, column) # 게임의 함수
형식과 맵의 다른 함수는 GridMap을 참고하세요.
창 막대의 코드에서 사용은 이 맵을 가리키는 스크립트 줄을 나열합니다. 줄을 고르면 그곳으로 이동합니다. 코드에서 맵 이름을 Cmd+클릭하면 이곳으로 돌아옵니다.
실행 취소 및 다시 실행
모든 편집은 실행 취소(Cmd+Z)의 한 단계입니다. 타일 한 획, 동전 한 줄을 놓는 드래그, 여러 오브젝트의 이동도 마찬가지입니다.