Eu tenho um problema complicado, não tenho certeza de como lidar melhor: tenho uma peça animada de uma porta. Quando fechado, ele deve ser classificado de uma maneira, mas quando aberto, ele precisa ser classificado de uma maneira diferente, pois pertence a um diferente (bloco vizinho).
Aqui está a porta fechada:
e a porta se abriu:
Eu imagino que seria possível substituir o sistema de classificação para esses blocos e ajustar a classificação com base no quadro, mas parece um pouco hacky.
Alguém já encontrou um cenário semelhante? Alguma solução elegante?
Respostas:
Talvez você possa fazer uma porta com dois objetos, em ladrilhos diferentes, e mostrar apenas um deles de cada vez. Dessa forma, a porta aberta também pode bloquear o movimento, o que parece meio realista.
fonte
Crie três sprites ...
Quando a porta estiver fechada, desenhe o sprite 1 e trate-o como um "bloqueador" para que os jogadores não possam atravessá-lo.
Quando a porta estiver aberta, substitua o sprite por # 2 (apenas o pilar da porta). Em seguida, coloque o sprite nº 3 (apenas a porta) na célula adjacente em que a porta estaria.
Fechar é apenas remover a porta e substituir o poste por poste + porta na posição fechada.
Com essa configuração, você não precisa se preocupar em renderizar a porta aberta em nenhum pedido especial. Basta renderizá-lo na ordem como qualquer outro objeto no quadrado em que ele se encontra.
A desvantagem é que você não pode ter o jogador ou qualquer outro objeto na praça onde a porta aberta irá.
fonte
Existem dois truques que eu uso para classificar em 2D:
Adicione a posição do solo aos sprites; este é um ponto em que o sprite toca o chão (pés femininos, tronco de árvore, batente da porta) e o classifica em vez de pixels dos sprites. Dessa forma, o sprite não será afetado pela animação
Adicione childs não classificáveis aos objetos (as mulheres podem ter vários childs que não afetam a classificação - manto, arco, espada, etc., a moldura da porta tem a porta da criança). Dessa forma, a animação de sprites filhos também não afeta a classificação.
fonte
A melhor maneira de resolver a classificação de objetos é não classificar de maneira alguma. Se você usar um buffer de profundidade, poderá renderizar tudo de uma só vez. Objetos com um valor z mais alto estarão mais distantes do que objetos com um valor z mais baixo.
Mesmo se o seu jogo for 2D, você ainda deve considerar o uso de coordenadas 3D com um buffer de profundidade, caso contrário, você tocará para sempre o algoritmo do pintor .
fonte