이미지는 수직 스트립 형태예요
애니메이션 프레임이 4개인 16×16 텍스처는 16×64 PNG예요: 각 프레임이 정사각형 모양으로 위에서 아래로 쌓여 있고 첫 번째 프레임이 맨 위에 위치해요. 게임은 너비를 통해 프레임 크기를 유추하므로 높이는 단순히 그 값의 배수이기만 하면 돼요. 이것이 바로 바닐라가 불, 물, 프리즈마린 같은 요소를 애니메이션하는 정확한 방식이에요.
prismarine.png 16 wide × 64 tall = 4 frames of 16×16
┌────────┐ frame 0
├────────┤ frame 1
├────────┤ frame 2
├────────┤ frame 3
└────────┘{.mcmeta 파일
텍스처 옆에는 동일한 이름에 다음 확장자가 붙은 파일이 위치해요 .mcmeta — 즉 prismarine.png 동반되는 파일은 prismarine.png.mcmeta. 중간에 .png 파일이 유지된다는 점에 주의하세요. 이 부분에서 사람들이 자주 실수를 해요.
{
"animation": {
"frametime": 2,
"interpolate": true
}
}이 파일이 없으면 키가 큰 PNG는 애니메이션으로 취급되지 않고, 찌그러지고 크기가 잘못된 텍스처로 취급돼요. 스트립 자체만으로는 아무 일도 일어나지 않어요.
frametime
각 프레임이 유지되는 게임 틱 수예요. 1초에는 20틱이 있으므로 frametime: 2 초당 10프레임이며 frametime: 20 초당 1프레임이에요. 기본값은 1이며, 틱당 1프레임으로 매우 빠르므로 원하시는 경우가 거의 없어요.
interpolate
포함된 항목 interpolate: true, Minecraft는 화면이 끊기는 대신 한 프레임에서 다음 프레임으로 부드럽게 전환돼요. 이것이 바로 바닐라 게임이 적은 수의 프레임만으로 느린 반짝임 효과를 내는 방식이에요 — 중간 과정을 모두 자동으로 생성해 주기 때문이에요.
발광, 물, 은은한 색상 변화 같은 점진적인 효과에 사용하세요. 깜빡이는 불빛이나 회전하는 패턴처럼 명확한 단계로 보여야 하는 항목에는 끄세요. 블렌딩을 적용하면 그냥 뭉개져 보여요.
프레임 순서 및 타이밍 제어
기본적으로 프레임은 파일 순서대로 재생되며 반복돼요. frames 배열은 이를 무시하고 재정의할 수 있어요 — 프레임 순서를 바꾸거나, 반복하거나, 개별 프레임마다 지속 시간을 지정할 수 있어요:
{
"animation": {
"frametime": 4,
"frames": [
0,
1,
{ "index": 2, "time": 20 },
1
]
}
}이렇게 하면 프레임 0, 1, 2, 1이 재생돼요(루프가 아니라 핑퐁 방식) — 그리고 다른 프레임들은 기본값인 4틱을 사용하는 동안 프레임 2는 온전히 1초 동안 유지돼요. 이런 식으로 프레임을 재사용하면 PNG 크기를 작게 유지할 수 있어요; 왕복 애니메이션이라고 해서 이미지에 프레임을 중복으로 넣을 필요가 없어요.
짧게 유지하기
JSON을 작성하지 않고 처리하기
The 편집기 파일 형식 대신 프레임 단위로 애니메이션을 처리해요: 프레임을 만들고 속도를 설정하면, 스트립과 .mcmeta 파일이 내보내기 시 올바른 이름으로 생성돼요. 또한 GIF를 가져와 프레임으로 변환할 수도 있는데, 이는 루프를 직접 그리는 것보다 보통 더 빨라요.
무언가가 잘못된 순서로 애니메이션되거나 아예 움직이지 않는다면, 거의 항상 .mcmeta 이름 문제예요 — 다음 항목을 확인해 보세요 texture.png.mcmeta 대신 texture.mcmeta. 그 외의 오류에 대해서는 다음에서 확인할 수 있어요. 텍스처 팩이 작동하지 않는 이유.
