M MY Multiplayer: Wiki
Lado
Tipo

setCinematicCamera

Cliente

Define os planos de câmera que a cinemática dirige durante a reprodução. Substitui os planos anteriores.

bool setCinematicCamera(cinematic cinematic, table shots)

Parâmetros

NomeTipoDescrição
cinematiccinematicA cinemática.
shotstableLista de planos, em ordem de start. Uma lista vazia tira a câmera da cinemática.

Retorno

true se aplicou. false se a tabela é inválida, com um aviso dizendo o motivo.

Campos comuns do plano

Os tempos são da cinemática, em ms. Cada plano começa depois que o anterior para:

  • start: quando entra (obrigatório).
  • blend: ms para misturar a partir do plano anterior. 0 é um corte.
  • stop: quando para. Sem ele, vai até o próximo plano; depois de parar, a câmera fica na última vista.
  • shake: tremor em metros, 0 por padrão. shakeSpeed: frequência em Hz, 12 por padrão.
  • letterbox: true mostra as faixas de tela larga do SA durante o plano.

Planos de trajeto

Um plano de trajeto define keys (lista de chaves em ordem de tempo):

  • time: instante da chave em ms (obrigatório).
  • position e target: coordenadas vec3 (obrigatórios).
  • roll: inclinação em graus (0 por padrão).
  • fov: campo de visão em graus, acima de 0 e abaixo de 180 (70 por padrão).
  • smooth: true segue a curva de cutscene do SA; false vai em linha reta até a próxima chave.
  • ease: interpolação até a próxima chave — "linear" (padrão), "inQuad", "outQuad", "inOutQuad", "inCubic", "outCubic" ou "inOutCubic".

Planos seguindo um ator

Um plano que segue um ator define:

  • actor: nome do ator (obrigatório).
  • offset: deslocamento vec3 no espaço do ator (obrigatório).
  • Alvo da câmera: lookAt (vec3 no espaço do ator), lookAtActor (nome de outro ator) ou lookAtBone (osso de um ped).
  • roll e fov: inclinação e campo de visão opcionais em graus.

Exemplo

local intro = createCinematic("cinematics/intro.cine")
setCinematicCamera(intro, {
    {
        start = 0,
        letterbox = true,
        keys = {
            { time = 0, position = vec3(2480, -1700, 30), target = vec3(2495, -1680, 14) },
            { time = 6000, position = vec3(2500, -1700, 20), target = vec3(2495, -1680, 14), ease = "inOutQuad" },
        },
    },
    { start = 6000, blend = 1000, actor = "hero", offset = vec3(0, -4, 1.5), lookAtActor = "hero" },
})

Veja também