타일셋
shared/tilesets/<이름>.json. 타일이 무엇인지를 정합니다 — 그림의 어디에 있는지,
몸이 부딪히면 어떻게 되는지, 뭐라고 불리는지.
{
"image": "client/art/tiles.png",
"tileWidth": 16, "tileHeight": 16,
"columns": 4, "margin": 1, "spacing": 2,
"tileCount": 8,
"tiles": [
{ "id": 1, "name": "stone", "collision": "solid" },
{ "id": 4, "name": "platform", "collision": "oneWay" },
{ "id": 8, "name": "bridge", "collision": "solid" }
]
}
image |
릴리스 안의 그림 경로. 서버는 열지 않습니다 |
tileWidth tileHeight |
한 칸의 크기 |
columns |
그림의 가로 칸 수 |
margin spacing |
그림 가장자리와 칸 사이의 여백 |
tileCount |
그림이 담은 타일 수 |
tiles |
무언가 할 말이 있는 타일만 |
판정
solid oneWay climbable swimmable slopeUpRight slopeUpLeft, 그리고
아무것도 하지 않는 empty.
타일셋이 언급하지 않은 id 는 배경입니다. 그려지지만 아무 판정도 없습니다 — 타일셋의 대부분이 그렇고, 그래서 사백 장짜리 시트에 항목 여덟 개만 적어도 됩니다.
이름
local bridge = town.tile("bridge")
map.setTile(x, y, bridge)
8 이라고 쓰지 마세요. 그것은 그림이 시트의 어디에 있는지일 뿐이라, 앞에 타일
하나만 끼워 넣어도 모든 스크립트에서 뜻이 조용히 바뀝니다.
여백을 두세요
칸이 딱 붙은 시트는 타일이 화면 픽셀에 정확히 얹히지 않는 순간 이웃 칸을 함께 읽습니다. 돌 위에 파란 줄이 생겼다면 시트에서 돌 아래 칸이 물이기 때문입니다.
margin: 1, spacing: 2 로 굽고 각 칸의 가장자리 픽셀을 한 칸 바깥으로 복사해
두세요. 그러면 무엇을 읽어도 자기 자신입니다. Tiled 에서 내보낼 때의 margin /
spacing 과 같은 뜻이므로, 산 시트를 그대로 쓸 수 있습니다.