MC Toolkit

Guias / Comandos e dados

Cutscenes de câmera sem mod: keyframes, interpolação e truques de espectador

O vanilla move uma câmera de um jeito só — uma função de teleporte a cada tick — e o registro de linha do tempo define o clima ao redor. Para que serve cada um, e a suavização que evita o resultado robótico.

Não existe um objeto de câmera no vanilla, então uma cutscene é uma ilusão construída com teleportes, com uma linha do tempo para mudar o mundo ao redor.

Método 1: teleportar o jogador a cada tick

O jeito antigo e universal. Coloque o jogador em espectador e mova-o ao longo de um caminho:

gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0

um tp por tick a partir de uma cadeia de funções. Funciona em todas as versões e não precisa de nada especial. Os problemas são todos de suavidade:

  • 20 keyframes por segundo. Uma cena de dez segundos são 200 linhas de tp.
  • Passos lineares parecem mecânicos. Movimentos reais de câmera aceleram e desaceleram.
  • A rotação dá a volta de forma problemática. Ir de yaw 170 para -170 é uma curva de 20 graus, mas a interpolação ingênua gira 340 graus no sentido errado. Normalize a diferença de ângulo para o intervalo -180…180 antes de avançar.

Gerar essas linhas é justamente para o que serve uma ferramenta de keyframes — você posiciona algumas posições e ela emite a função por tick com a suavização aplicada.

Suavização

A diferença entre amador e assistível é a curva de interpolação. Entre dois keyframes, com t de 0 a 1:

linear      t
ease-in-out t < 0.5 ? 2t²  :  1 − 2(1−t)²
smoothstep  t² × (3 − 2t)

smoothstep é o padrão seguro. Aplique-o à posição e à rotação juntas, ou a câmera chega antes de terminar de girar.

Método 2: linhas do tempo, para tudo menos a câmera

Versões recentes adicionaram um registro de timeline, e é tentador lê-lo como uma trilha de câmera:

data/<namespace>/timeline/intro.json

Não é. Uma linha do tempo roda contra um relógio do mundo e define atributos de ambiente por keyframe — cor do céu e da névoa, som ambiente e música, luz — com interpolação nativa. Ela não consegue mover um jogador, então a câmera em si continua sendo o método 1. O que uma linha do tempo faz bem é o clima de uma cutscene: apagar o céu, mudar a névoa e trocar a música no ritmo dos teleportes, sem um comando por tick para cada coisa.

O custo é que ela só existe em versões recentes, então um mapa voltado para clientes mais antigos precisa simular o clima com /time e /weather.

Manter o jogador no lugar

O caminho de teleporte briga com duas coisas:

  • Entrada do jogador. O espectador deixa o jogador voar para longe no meio da cena. Teleportar a cada tick anula isso, o que é um dos motivos pelos quais o método bruto persiste.
  • Carregamento de chunks. Uma câmera voando para um lugar não carregado mostra o vazio. Use /forceload no caminho antes da cena e remova depois.

Esconder a HUD

O modo espectador e o F1 já resolvem a maior parte. Para um quadro limpo, um pacote de recursos que deixe os sprites da HUD em branco remove a mira e a barra de atalhos sem que o jogador precise apertar nada — veja o guia de HUD.

Posicione keyframes em um caminho e exporte a função por tick, e monte a linha do tempo que define a cena ao redor, com os Construtores de Cutscene e Linha do Tempo.

Criadores de cenas e linhas do tempo →

Mais guias

Ver todos →