Câmera

Aprenda como controlar a câmera do jogador

Como criador, você pode ter controle total sobre a câmera do jogador. Por padrão, os jogadores podem escolher entre o modo de câmera em 1ª ou 3ª pessoa enquanto exploram sua cena, mas você pode impor uma modalidade de câmera diferente.

Câmeras virtuais podem ser estáticas, podem girar para sempre olhar para o jogador ou alguma outra entidade, ou podem ser anexadas ao jogador ou outra entidade para que sempre os acompanhem.

circle-exclamation

Modos de câmera em 1ª e 3ª pessoa

Normalmente os jogadores podem alternar entre a câmera em primeira e terceira pessoa pressionando V no teclado. Use um CameraModeArea para forçar o modo de câmera para 1ª ou 3ª pessoa para todos os jogadores que estiverem dentro de uma área específica em sua cena.

const entity = engine.addEntity()

CameraModeArea.create(entity, {
	area: Vector3.create(4, 3, 4),
	mode: CameraType.CT_FIRST_PERSON,
})

Se o modo de câmera atual do jogador não corresponder ao do CameraModeArea, ele fará a transição para esse modo de câmera. Um toast aparece na tela para esclarecer que essa mudança se deve à cena. Enquanto estiver dentro, os jogadores não podem alterar seu modo de câmera. Quando um jogador sai da CameraModeArea, seu modo de câmera é restaurado para o que tinha antes de entrar.

Use CameraModeArea em regiões onde os jogadores teriam uma experiência significativamente melhor usando um modo de câmera específico. Por exemplo, a primeira pessoa é ideal se o jogador precisa clicar em objetos pequenos, ou a terceira pessoa pode ser útil para os jogadores notarem alguma entidade que sua cena tenha anexado acima de suas cabeças. Não presuma que os jogadores sabem como alternar modos de câmera; muitos jogadores de primeira viagem podem não saber que têm a opção ou não lembrar a tecla para fazê-lo.

circle-exclamation
circle-exclamation

Ao criar um CameraModeArea componente, você deve fornecer o seguinte:

  • area: Tamanho da área do modificador

  • cameraMode: Qual modo de câmera forçar nesta área, a partir do CameraType enum.

Os modos de câmera suportados são:

  • CameraType.CT_FIRST_PERSON

  • CameraType.CT_THIRD_PERSON

Consultar o modo de câmera

Você pode consultar o modo de câmera do jogador usando o CameraMode componente no engine.CameraEntity.

Você também pode se inscrever para mudanças no modo de câmera usando o onChange função no CameraMode componente.

Usando câmeras virtuais

Para usar um comportamento de câmera personalizado em sua cena, você precisa de duas coisas:

  • Criar uma Câmera Virtual: Crie uma entidade em sua cena e atribua-lhe um VirtualCamera.

  • Atribuir essa câmera virtual: Adicione um MainCamera componente ao entidade reservada engine.CameraEntity, com uma referência para a entidade com o VirtualCamera componente.

A câmera então será anexada à entidade com o VirtualCamera componente. Se a entidade se mover ou girar, a câmera se move com ela.

Neste exemplo, a câmera estará sempre em uma posição fixa na cena, desde que o jogador permaneça dentro dos limites da cena. Assim que o jogador sair dos limites da cena, o comportamento de câmera padrão será restaurado.

Sua cena pode incluir quantas entidades com um VirtualCameracomponente quanto você quiser, e alternar dinamicamente entre múltiplas câmeras virtuais conforme o jogador se move, ou conforme ele realiza certas ações. Apenas uma câmera virtual está ativa a qualquer momento, isso é atribuído pelo MainCamera componente em engine.CameraEntity.

Para reverter ao comportamento de câmera padrão, defina o valor para undefined em MainCamera.virtualCameraEntity. O jogador fica então livre para alternar entre câmeras em 1ª e 3ª pessoa. Se você quiser que o jogador use apenas um desses dois modos, você pode usar um Áreas modificadoras de câmera para forçar um dos dois.

circle-exclamation
circle-info

💡 Tip: Quando a câmera se afasta do avatar, muitas vezes é uma boa prática também congelar os movimentos do avatar. Dessa forma o jogador não se move às cegas em direção a obstáculos. Veja Input Modifiersarrow-up-right

Visão aérea

Você pode usar uma câmera virtual para olhar a cena de uma vista top-down; isso pode ser uma variação divertida da perspectiva normal do seu avatar e permitir diferentes mecânicas de jogo.

Você deve evitar posicionar uma câmera olhando perfeitamente para baixo. Em vez disso, incline sempre a câmera levemente, mesmo 1 grau é suficiente. Isso porque os controles de direção do jogador são baseados na perspectiva da câmera, não na orientação do avatar. Se a câmera estiver olhando de uma vista aérea perfeita, não há uma definição clara de qual direção é qual. Uma inclinação imperceptível de 1 grau é suficiente para estabelecer uma direção para frente.

Transições de câmera

Sempre que a cena alterna entre câmeras virtuais, ou entre o comportamento de câmera padrão e câmeras virtuais, os jogadores veem uma transição. A posição, rotação e quaisquer outros parâmetros da câmera virtual mudam suavemente ao longo de um período de tempo.

As configurações de transição em uma câmera virtual determinam como você faz a transição para essa câmera, a partir de qualquer outra câmera na cena, incluindo a padrão. Elas não afetam como você faz a transição para fora dessa câmera.

circle-info

💡 Tip: Para evitar ter uma transição e alternar instantaneamente para uma câmera, defina o tempo de transição ou a velocidade para 0.

Dependendo do seu caso de uso, você pode preferir definir a velocidade da transição em vez da duração:

  • Tempo Fixo: Você define a duração da transição; a câmera se moverá tão rápido quanto necessário para completar o percurso nesse período de tempo.

  • Velocidade Fixa: Você define quão rápido deseja que a câmera virtual se mova durante a transição; a duração dependerá da distância. O valor usado para velocidade é interpretado como metros por segundo.

Abaixo estão exemplos para ambos os modos de transição:

Abaixo está um exemplo completo com duas câmeras virtuais e transições entre elas:

As transições sempre se movem em linha reta, sem considerar quaisquer obstáculos no caminho. Você poderia em vez disso criar uma transição manualmente usando outra câmera virtual como intermediária; dessa forma você teria controle total sobre seus movimentos. Essa câmera virtual intermediária poderia executar um Tween da posição da primeira câmera para a posição da segunda câmera, ou seguir um caminho mais personalizado que evite obstáculos ou faça um desvio cinematográfico.

Câmera seguindo

Você pode configurar uma câmera virtual para que ela sempre aponte na direção do jogador, ou de alguma entidade específica na cena. A posição da câmera permanecerá estática, mas sua rotação mudará para manter essa entidade sempre centralizada.

Isso pode ser alcançado com o lookAtEntity no VirtualCamera componente. Para seguir o jogador, use o entidade reservada engine.PlayerEntity.

Se uma entidade estiver sendo seguida pela câmera, isso apenas mudará a rotação, não a posição da câmera.

À medida que a câmera gira, o Transform da entidade com o VirtualCamera componente não muda. No entanto, você pode ler a rotação da câmera a partir do Transform em engine.CameraEntity. A rotação e a posição dessa entidade serão absolutas; não estarão condicionadas pela da entidade com o VirtualCamera componente. A rotação desse transform é afetada pelo lookAtEntity comportamento.

circle-exclamation

Anexar ao jogador

Outro uso da câmera virtual é seguir o jogador a partir de uma distância ou ângulo personalizados, anexando uma câmera virtual à entidade do jogador. Note que o jogador não pode alterar livremente a rotação da câmera, então neste caso a rotação da câmera será fixa à da câmera virtual. Isso pode ser útil, por exemplo, para jogos de corrida, onde espera-se que o jogador sempre olhe para frente.

Câmeras e colliders

Quando a câmera do jogador se move em modo terceira pessoa, a câmera pode ser bloqueada por colliders ou não, dependendo das camadas de colisão atribuídas às entidades. Tenha isso em mente ao projetar sua cena; você pode querer impedir que a câmera atravesse paredes ou outras entidades.

Veja Colliders para mais detalhes sobre como configurar colliders para sua cena.

Atualizado