Estou escrevendo um RTS com base em blocos 2D. E eu quero adicionar um recurso 'pseudo 3D' a ele - pontes sobre os rios.
Ainda não iniciei nenhuma codificação, apenas tentando pensar como ela se encaixa no modelo de detecção de colisão. Um barco que passa por baixo da ponte e uma unidade que se move sobre a ponte acabarão ocupando a mesma célula no mapa. Como elogiá-los de colidir?
Existe uma abordagem comum para resolver esse problema? Ou eu preciso implementar um mundo 3D para fazer isso?
2d
3d
collision-detection
rts
aleguna
fonte
fonte
Respostas:
Você basicamente precisará criar uma terceira dimensão, embora, no caso mais simples, ela possa consistir em apenas dois valores: "no solo / na ponte" e "na água / abaixo da ponte".
Uma inspiração pode ser encontrada da maneira que o Comando Estratégico Avançado faz: As unidades ocupam um nível de altura específico, só podem se mover em níveis de altura adequados ao seu tipo, a menos que existam recursos específicos que permitam fazê-lo (por exemplo, pistas para aeronaves) e alterá-los geralmente custa pontos de movimento, com penalidades em alguns níveis de altura ou outros. Um bloco pode ser ocupado por qualquer número de unidades, desde que cada um esteja em um nível de altura diferente.
No caso de ASC, os níveis são:
fonte
Você pode adicionar um atributo simples a cada bloco que especifica seu nível.
Então, por exemplo:
Agora você pode classificar seus ladrilhos, dependendo dos valores de suas camadas e desenhá-los de baixo para cima! Isso fará com que pareça que você tem uma certa profundidade no seu jogo. A maioria dos mecanismos de blocos suporta isso. Outra coisa interessante que você pode adicionar é a transparência de suas texturas, para que você possa ver até a camada inferior.
Isso pode ser feito com a água, por exemplo - imagine a água no nível 1 e depois no fundo do oceano no nível 0. Se a textura da água for um pouco transparente, você poderá ver o fundo do oceano de cima.
fonte