Estoy escribiendo un mosaico 2D basado en RTS. Y quiero agregarle una función 'pseudo 3D': puentes sobre los ríos.
Todavía no he comenzado a codificar, solo trato de pensar cómo encaja en el modelo de detección de colisión. Un bote que pase por debajo del puente y una unidad que se mueva sobre el puente eventualmente ocupará la misma celda en el mapa. ¿Cómo evitar que choquen?
¿Existe un enfoque común para resolver tal problema? ¿O necesito implementar un mundo 3D para hacer esto?
2d
3d
collision-detection
rts
aleguna
fuente
fuente
Respuestas:
Básicamente, tendrá que crear una tercera dimensión, aunque en el caso más simple puede consistir en solo dos valores: "en tierra / en puente" y "en agua / debajo del puente".
Se puede encontrar una inspiración en la forma en que lo hace el Comando Estratégico Avanzado : las unidades ocupan un nivel de altura específico, solo pueden moverse en niveles de altura que se ajusten a su tipo a menos que haya características específicas que les permitan hacer lo contrario (por ejemplo, pistas de aterrizaje para aviones) y cambiarlos generalmente cuesta puntos de movimiento, con penalizaciones en algunos niveles de altura u otros. Una ficha puede estar ocupada por cualquier número de unidades siempre que cada una tenga un nivel de altura diferente.
En el caso de ASC, los niveles son:
fuente
Puede agregar un atributo simple a cada mosaico que especifique su nivel.
Así por ejemplo:
Ahora puede ordenar sus mosaicos en función de sus valores de capa y dibujarlos de abajo a arriba. Esto hará que parezca que tienes una cierta profundidad en tu juego. La mayoría de los motores de mosaico admiten esto. Otra cosa genial que puedes agregar es la transparencia a tus texturas para que puedas ver hasta la capa inferior.
Esto se puede hacer con agua, por ejemplo: imagine el agua en lvl 1 y luego el fondo del océano en lvl 0. Si la textura del agua es algo transparente, podrá ver el fondo del océano desde arriba.
fuente