Confusão sobre o tamanho do sprite no espaço mundial (Unity)

11

Eu tenho um Sprite com resolução 1080x1920. E defino a resolução de exibição do jogo também para 1080x1920. O que eu estava pensando é que o sprite (1080x1920) deve se encaixar corretamente na visualização da câmera.

a resolução da imagem é 1080x1920

Mas quando eu arrasto esse sprite, o sprite é ampliado e sai da visualização da câmera.

visualização na tela, o sprite está fora da câmera

Quais ajustes eu preciso fazer para garantir que esse sprite seja 100% adequado à visão da câmera. Eu poderia ter mudado a escala de transformação do Sprite. Mas isso causará problemas, porque eu tenho muitos outros sprites para lidar e eles devem ser proporcionais.

Faizan Khan
fonte
Você está falando de um sprite 3D? Ou sprite de interface do usuário 2D?
TomTsagk
Um Sprite 2D .....
Faizan Khan

Respostas:

19

Isso faz sentido quando você se lembra de que os sprites não estão apenas sendo misturados pixel por pixel na tela (o que tornaria um pesadelo ter a mesma aparência em telas com resoluções diferentes, já que elas cortariam sua arte de maneira diferente) , mas eles fazem parte do seu mundo 3D em um sistema de coordenadas de jogabilidade independente de dispositivo que você pode controlar.

Como tudo no mundo do jogo, a parte que acaba sendo mapeada para a tela é determinada pela forma como você configurou seu objeto Câmera.

Portanto, há quatro partes que decidem o tamanho do seu sprite:

  1. A resolução de origem do sprite.

  2. A configuração de pixels por unidade escolhida em seu inspetor de configurações de importação.

    Isso define um fator de conversão para transformar tamanhos de pixels no espaço de textura em unidades no espaço do mundo (ou seja, o espaço no qual todos os seus cálculos de jogabilidade e física acontecem)

    Altura em unidades mundiais = Altura da fonte em pixels / pixels por unidade

    Geralmente, você deve escolher esse número para se alinhar com algumas métricas relevantes de jogo no seu jogo. por exemplo. se você tiver uma grade de blocos com um espaçamento de 135 pixels, escolher Pixels por unidade = 135 fará com que cada célula da grade tenha exatamente 1 unidade de largura no sistema de coordenadas do jogo, tornando seus cálculos mais convenientes.

  3. O tamanho ortográfico da sua câmera.

    (Ou, se estiver usando uma câmera em perspectiva, uma combinação do campo de visão e a profundidade da câmera até o sprite)

    Isso determina quantas unidades do seu mundo sua câmera pode ver, do centro da visualização até a borda superior.

    Porção da altura da câmera ocupada = Altura em unidades mundiais / (2 * tamanho da câmera)

    Portanto, se rodarmos com o valor de 135 PPU, o sprite de 1920 pixels de altura terá 14.222222 unidades de altura no mundo, o que significa que precisaremos de uma câmera com uma altura de 7.111111 para capturar tudo de cima para baixo (já que a altura da câmera é medida a partir de o meio para fora)

  4. O tamanho do pixel da resolução da tela da janela / saída.

    Por padrão, a visualização da câmera preenche a tela verticalmente; portanto, se a tela / janela mudar de altura, o corte vertical da cena não será alterado (um objeto na borda superior ou inferior da tela não se moverá ou cortada, toda a cena ficará maior ou menor para preencher a altura disponível).

    Assim, o número de unidades mundiais que sua câmera pode ver dos mapas de cima para baixo até o número de pixels na sua janela / tela de cima para baixo.

    Tamanho do pixel de saída = parte da altura da câmera ocupada * altura da janela em pixels

    Portanto, se nossa tela tiver 1920 pixels de altura e nosso sprite de origem preencher exatamente a visualização da câmera, ela será impressa em todos os 1920 pixels da tela em alinhamento 1: 1.

DMGregory
fonte
Estou muito grato a você por sua resposta detalhada !!!!
Faizan Khan
3
Estou feliz que você tenha achado útil! Eu escrevi alguns outros Q & A sobre como trabalhar com tamanhos de sprite na unidade que pode também ajuda: na escolha de tamanhos de sprite , na correspondência a aparência de diferentes tamanhos sprites , em pixel art escala
DMGregory
1
Obrigado .... Eu também te segui no Twitter ... Estou me sentindo muito bem por ter interagido com uma pessoa que trabalha na UbiSoft :) #
Faizan Khan