Tutorial Unity Cinemachine e Timeline
Cinemachine é um pacote para Unity que oferece aos desenvolvedores controle de câmera profissional e aprimora a capacidade de criar cenas cinematográficas.
Este tutorial abordará os seguintes tópicos:
- Instalação do cinema
- Configuração da câmera em terceira pessoa
- Criação de cena da linha do tempo
Instalação do cinema
Para instalar o Cinemachine, siga os passos abaixo:
- Em Unity vá para Janela -> Gerenciador de Pacotes
- Alterar pacotes para "Unity Registro"
- Selecione "Cinemachine" na lista e clique em "Install"
O Cinemachine agora está pronto para uso.
Configuração da câmera em terceira pessoa
Abaixo vou mostrar como configurar uma câmera em terceira pessoa usando a Câmera Virtual do Cinemachine.
Uma câmera virtual é uma versão leve de uma câmera Unity, que não renderiza sozinha, mas é meramente usada como um ponto de referência para a câmera principal.
Como exemplo para este tutorial, usarei um controlador de terceira pessoa, exceto sem configurar a colisão da câmera e sem mover a câmera dentro da hierarquia do jogador:
Como você pode ver, o jogador está se movendo, mas a câmera não o segue.
Configurar uma câmera de terceira pessoa usando o Cinemachine é muito fácil:
- Vá para GameObject -> Cinemachine -> Câmera Virtual para criar uma nova câmera virtual
- Nomeie a câmera virtual "TPS Camera"
- Selecione TPS Camera e em CinemachineVirtualCamera atribua a variável Follow (no meu caso será o objeto "CameraParent", que está localizado dentro de uma hierarquia do player e representa a rotação vertical do visual)
- Definir o valor do corpo para "3rd Person Follow"
- Defina Ignorar tag como "Player" e também selecione o objeto raiz do jogador e defina sua tag como "Player" (se houver algum colisor filho na hierarquia do jogador, faça certifique-se de mudar suas tags para "Player" também)
- Ajuste outros valores no CinemachineVirtualCamera, como distância da câmera, lado da câmera, deslocamento do ombro e amortecimento até ficar satisfeito com o resultado.
- Definir o valor de mira de CameraParent como "Do nothing"
A câmera agora deve seguir o jogador:
Criação de cena da linha do tempo
Aqui mostrarei como compor uma cena usando Unity's Linha do tempo.
Timeline é um editor embutido que permite aos desenvolvedores compor cutscenes animando a câmera e também usando animações existentes (ex. passeio de personagem), além de eventos e sinais, organizando-os de maneira sequencial.
O pacote Cinemachine adiciona algumas opções extras a um editor de linha do tempo, como a capacidade de alternar entre câmeras virtuais.
Para criar uma cutscene, siga os passos abaixo:
- Crie um novo GameObject e chame-o de "TimelineManager"
- Abra a janela Timeline indo para Window -> Sequencing -> Timeline
- Selecione o objeto "TimelineManager" e na janela Timeline, você deve ver uma opção para criar um componente Director e recurso Timeline, clique nele.
- Depois de criar o componente Director e o recurso Timeline, você deve ver a janela Timeline vazia (certifique-se de que o objeto TimelineManager esteja selecionado para poder editá-lo).
- Agora podemos começar a adicionar componentes à linha do tempo clicando com o botão direito do mouse na janela.
Como você pode ver, a janela Timeline tem várias opções:
- Track Group - este é um grupo que pode conter ações de linha do tempo e é útil para organização.
- Acompanhamento de ativação - define o objeto que deve estar ativo somente durante um período de tempo definido.
- Animation Track - isso reproduzirá uma animação específica durante um período de tempo definido.
- Faixa de áudio - isso reproduzirá um áudio específico durante um período de tempo definido.
- Control Track - uma faixa cujos clipes controlam elementos relacionados ao tempo em um GameObject.
- Signal Track - permite executar uma ampla variedade de ações em um objeto de jogo específico em um momento específico (ex. ativar o script de movimento do jogador ou chamar uma função específica quando a linha do tempo atinge um determinado quadro, etc.)
- Faixa reproduzível - uma faixa cujos clipes podem ser reproduzidos de forma personalizada.
- Cinemachine Track - permite misturar várias câmeras virtuais de cinemachine.
Para este tutorial, usarei apenas Animation Track e Signal Track.
Configurar
- Crie outra câmera virtual e nomeie-a como "CutsceneCamera" e defina seu valor "Priority" para um nível acima de "TPS Camera" (ex. 11)
- Clique com o botão direito na visualização do projeto -> Criar -> Sinal e nomeie-o como "DisablePlayer"
- Duplica o sinal "DisablePlayer" e renomeia-o para "EnablePlayer"
- Crie um novo GameObject na cena e nomeie-o como "SignalReceiver"
- Anexar componente SignalReceiver a um objeto "SignalReceiver"
- Clique em "Add Reaction" 2 vezes
- Atribuir "DisablePlayer" a uma primeira reação e "EnablePlayer" a uma segunda reação
"DisablePlayer" ativará a câmera de cena, desativará a câmera do jogador e o script de controle do jogador e será colocado no início da linha do tempo.
"EnablePlayer" desativará a câmera da cena, ativará a câmera do jogador e o script de controle do jogador e será colocado no final da linha do tempo.
- Clique (+) para adicionar um slot de reação e atribua o objeto cujo script ou componente precisa ser ativado/desativado.
Dica: Para criar um sinal oposto, basta configurar as reações para "DisablePlayer" e clicar no ícone de engrenagem -> Duplicar, alterar o sinal para "EnablePlayer" e inverta as caixas de seleção.
- Selecione o objeto "TimelineManager" e, na janela Timeline, adicione uma nova trilha de sinal clicando com o botão direito do mouse -> Track de sinal e atribua o objeto "SignalReceiver" a ela.
- Arraste e solte "DisablePlayer" recurso de sinal no início da linha do tempo e "EnablePlayer" no quadro em que deseja que a cena termine:
Isso fará com que o script do controlador do jogador e a câmera sejam desativados no início e reativados quando a linha do tempo chegar ao fim.
Por último, vamos criar uma animação de câmera simples.
- Clique com o botão direito do mouse em Timeline -> Animation Track e atribua "CutsceneCamera" (isso solicitará a adição do componente Animator ao objeto, se não houver nenhum)
- Clique no botão de gravação
- Mova o "CutsceneCamera" levemente, para que o quadro-chave seja aplicado, em seguida, mova a alça do quadro da Linha de tempo para o final e, por último, mova a câmera para uma nova posição e clique em parar a gravação.
Vamos apertar o play e ver o resultado:
A cena é reproduzida no início do jogo.