Como lidar com objetos de jogo com duas profundidades?


8

parte inferior do objeto sob o jogador, sua parte superior sobre o jogador

Quero poder fazer o que você vê na imagem, mas com uma única parede. O jogador deve poder andar em ambos os lados do mesmo objeto . Ou seja, a mesma parede fica abaixo do herói quando eu desço, e fica acima do herói se eu sair de cima dele.

É como duas profundidades na mesma parede, então não é apenas uma questão de desenhá-lo antes ou depois. Eu poderia cortar o objeto em dois, mas essa seria a solução fácil (e talvez computacionalmente cara). Como devo fazer isso?


3
Dividir o objeto em dois parece a maneira mais natural de fazê-lo. A parte superior fica atrás do personagem, e a parte inferior fica entre o jogador e o personagem. Ainda não é computacionalmente caro, você só precisa garantir que as duas partes não se afastem.
Fabinout

Sim, provavelmente terei que fazê-lo, mas há outras idéias?
Xkynar

Respostas:


8

Aqui estão três maneiras de fazer isso. Qual será o mais adequado depende do tipo (graficamente) de jogo que você está criando.

  1. Como o usuário Fabinout já comentou: "Dividindo o objeto em dois ... A parte superior fica atrás do personagem, e a parte inferior fica entre o jogador e o personagem". Se você estiver criando um jogo rigidamente baseado em blocos (os caminhos mostrados são os únicos dois caminhos possíveis perto da parede), essa é provavelmente uma boa maneira de fazê-lo. Observe que, para que isso funcione, a distância entre os caminhos superior e inferior deve ser pelo menos igual à altura do personagem.

    Uma desvantagem desse método é que ele só ajuda em casos como esse em particular; não é uma estratégia geral para empilhar sprites.

  2. Desenhe todos os sprites - tanto do jogador quanto do cenário - de cima para baixo na ordem de suas posições no nível do solo (base da parede, pés do jogador). Isso fará com que a parede seja mostrada automaticamente no lado correto e é uma estratégia comum para jogos com estilo "isométrico" e "2D RPG".

    Outra vantagem disso é que geralmente parece bom, mesmo que objetos passem um pelo outro - por exemplo, personagens que não bloqueiam o movimento de outros; andando por um campo de grama alta. As desvantagens são que você precisa determinar com eficiência a ordem do desenho (por exemplo, classifique seus sprites ou tenha uma matriz 2D de ladrilhos que sabem quais sprites estão neles) e isso fica complicado quando você tem objetos que nem todos estão enraizados visualmente no mesmo nível do solo.

  3. Tenha uma "camada frontal" e uma "camada traseira" onde seu personagem ocupa um ou outro (e a parede é desenhada depois das costas, mas antes da frente). Dependendo de como você se aproxima da parede, o personagem é alternado para a camada frontal ou traseira por zonas de gatilho. É assim que os jogos Sonic the Hedgehog lidam com coisas como loop-the-loops.

    A vantagem é que você pode ter essencialmente dois planos 2D independentes para construir seus elementos de nível. No entanto, isso é mais apropriado para um jogo em que o movimento vertical está subindo, enquanto, pelo formato dos gráficos, o jogo parece ser aquele em que o movimento vertical na tela está se movendo para frente / para trás no chão, e há muito mais de duas posições diferentes nessa dimensão.


Usar camadas como o nº 3 é quantas, senão a maioria dos truques de rolagem lateral dos consoles antigos funcionaram.
Patrick Hughes

1

Desenhe objetos na ordem do Yvalor, para que os objetos "mais distantes" (mais acima na tela) sejam desenhados antes / abaixo dos objetos "mais próximos". Que simples.

Em geral, apenas forneça aos objetos um valor de profundidade (que pode ser implicitamente baseado You definido explicitamente, dependendo do jogo e das necessidades) e renderize nessa ordem.

Este é o "algoritmo do pintor" em ação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.