Como Calcular o Tamanho da Visão da Câmera Ortográfica no Unity

3 Flares 3 Flares ×

Este é um artigo convidado escrito pelo Leonardo Thurler sobre a câmera ortográfica na game engine Unity.

Leonardo é um cientista da computação que atualmente trabalha como analista de sistemas e desenvolve games no seu tempo livre. Ele é membro da Academia de Produção de Jogos, nosso treinamento online com cursos, entrevistas e uma comunidade incrível de desenvolvedores de games.

Aliás, eu tenho uma oportunidade para você: se você quer se aprofundar no desenvolvimento de jogos e saber mais sobre a Academia PDJ, não deixe de participar de uma aula online comigo! Você pode se inscrever por meio deste link.

Neste artigo o Leonardo Thurler vai te ensinar a calcular o tamanho adequado de visão da câmera ortográfica no Unity – algo essencial para jogos 2D.

Sem mais delongas, deixo você com o ótimo artigo do Leonardo.

Com vocês, Leonardo Thurler

Olá, pessoal!

Acredito que a maioria das pessoas que utilizam o Unity já passaram pela situação de importar um Sprite no Unity e ele ficar gigante ou muito pequeno em relação ao tamanho da câmera.

Nessa situação, muitas acabam modificando a escala do objeto, dentro do próprio Unity, para que o seu tamanho fique adaptado ao resultado esperado dentro da câmera.

Só que ao fazer isso muitas vezes a aparência do Sprite acaba perdendo a qualidade por essa modificação na escala. Por isso, esse artigo tem como objetivo mostrar como calcular corretamente o tamanho da visão de uma câmera ortográfica no Unity e com isso resolver o problema de ter que redimensionar os Sprites correndo o risco dos mesmos perderem a qualidade.

Então, mãos à obra

Quando iniciamos um novo projeto 2D no Unity, ele já carrega uma “Scene” somente com um objeto instanciado nela e ele contém o componente que faz dele a nossa câmera do jogo. Essa câmera vem configurada com o atributo Projection no valor Ortographic (que é indicado para jogos 2D), e o atributo Size no valor 5, conforme pode ser visto na imagem abaixo:

Câmera ortográfica no Unity

Até aí tudo bem, mas o que esse Size com o valor 5 significa e quantos pixels isso representa?

Sprites e a propriedade Pixels Per Unit

Antes de saber o quanto em pixels esse valor irá representar é preciso se atentar a mais um detalhe quando se fala de Sprites no Unity.

Para o nosso teste, eu criei uma imagem toda vermelha com as bordas verdes com o tamanho de 1280x720px.

Todo Sprite no Unity tem um atributo chamado “Pixels Per Unit” e que por default vem no valor de 100, como pode ser visto na imagem abaixo:

camera-ortografica-unity-2

Esse atributo indica exatamente quantos pixels cada unidade do atributo Size da câmera irá representar, no caso por padrão uma unidade representaria 100 pixels. Com isso em mente, voltamos ao cálculo do Size da câmera ortográfica.

Calculando o tamanho da visão da Câmera Ortográfica no Unity

O valor que se encontra no atributo Size da câmera representa a metade da quantidade de unidades de sua altura. Por exemplo, o valor 5 indica que a visão da câmera terá uma altura de 10 unidades.

A largura da câmera é definida pelo aspecto da tela em que o jogo está sendo rodado. No caso de um aspecto 16:9 a largura seria de 16 unidades de largura para cada 9 unidades de altura.

Então, como podemos obter uma câmera com uma visão de 1280x720px? O cálculo para isso agora é simples, uma vez que sabemos que cada unidade representa 100px, dividimos a altura da resolução desejada por 100, no caso 720/100. Isso será igual a 7.2, mas sabemos também que o valor do atributo Size da câmera ortográfica do Unity é a metade de sua altura então dividimos 7.2 por 2. Logo, chegamos ao valor 3.6.

Quando colocamos esse valor no atributo da câmera podemos ver que a parte superior e a inferior da câmera ficaram exatamente no limite da imagem gerada para o teste. Conforme pode ser observado abaixo:

camera-ortografica-unity-3

Note na imagem a seguir que eu não precisei alterar o valor da escala do objeto que possui o Sprite, porque a câmera está com a visão no tamanho correto.

camera-ortografica-unity-4

Porém, é possível observar que a lateral da aba “Game” está com a cor azul. Isso ocorre porque a câmera está com a visão em “Free Aspect” e a câmera possui Skybox na cor azul como background. Para que as laterais fiquem exatamente nas extremidades que queremos é preciso colocar o aspecto que condiz com a resolução desejada, no caso o aspecto é 16:9. Ao alterarmos a visão para este aspecto temos o resultado desejado.

camera-ortografica-unity-5

Conclusão

Acredito que esse artigo possa te ajudar tanto na hora de criar os Sprites para o jogo, quanto na hora de pensar nos desafios que você enfrentará dentro da visão da câmera.

Espero que tenha gostado da leitura. Um abraço e até o próximo artigo!

  • Patrícia Tamega

    Léo, adorei a forma com que você explicou o conteúdo!

    Até eu, que estou iniciando no mundo do Unity, entendi!

    Já sei a quem recorrer quando tiver alguma dúvida.

    Parabéns pelo artigo, e espero poder ler outros!

    • Bom saber que isso te ajudou de alguma forma, qualquer coisa pode perguntar sim e eu pretendo produzir outros artigos. 😀

  • Valter

    Muito bom, Léo! Isso não só ocorre no unity, mas também em muitas outras engines! Eu colocava uma sprite com boa resolução no game, mas não sabia o motivo de ela nunca ficar boa! Valeu por esclarecer!

  • Leonardo Medeiros

    Muito boa a dica Léo! Parabéns!

  • Gustavo Larsen

    Muto bom artigo.
    Isso se aplica da mesma forma para pixel art? Pois as sprites são normalmente muito pequenas 16×16 ou 32×32 pixels.
    Se houver diferenças, por favor, escreva um artigo sobre isso para jogos de pixel art.

    Abraço!

    • Fala Gustavo,

      isto se aplica a pixel art sim, como em pixel art os sprites são pequenos você vai ajustar o size da câmera para se adequar a quantidade de pixels que você deseja mostrar na tela. Usando a lógica explicada no artigo.

      E obrigado fico feliz em saber que gostou do artigo.

  • Maykel Matheus Dias

    Leo Thurler, muito boa essa dica, deixa te perguntar, no caso eu devo fazer esse ajuste no que deve aparecer ou não do meu jogo certo? Por exemplo você usou 16:9. no caso se eu for usar 9:16 para trabalhar na vertical, devo fazer no caso de HD 1280/100/2 né? E como isso fica para várias resoluções de tela no quesito Android? Obrigado e parabéns pelo post!! Sucesso!

  • Eduardo Jordan Prado

    Parabéns pelo artigo, adquiri dois cursos online sobre Unity e desenvolvimento 2D e esse tópico nem chegam a ser abordado. Muito útil mesmo, vlw. 🙂

  • Bruno

    Ótimo, eu estava conhecendo site por procura de artigos sobre unity e achei este post realmente ajuda qualquer um, vou recomendar ao meus amigos que utiliza o unity!