A juzgar por lo que @davidluzgouveia comentó en la publicación de anónimo, mencionaré mi proyecto. Sin embargo, el seguimiento de ruta y la búsqueda de ruta son muy diferentes. La búsqueda de ruta es más de lo que anónimamente estaba publicando, y para la búsqueda de ruta buscaría en el algoritmo de Dijkstra. Para el seguimiento de la ruta, uso completamente mi motor de física de elección. La forma en que lo configuré es que cada ubicación a la que camina una clase de unidad, se configura en su subclase de ruta a través de desplazamientos 2D, sí, son 2D y no 3D, esto se debe a la forma en que configuré mi física en mi juego .
Explicación 3D:
cada unidad tiene solo un colisionador principal que está configurado exclusivamente para la colisión con el terreno y los objetos del mundo. Es una forma de cápsula y tiene un radio y una altura programáticamente hablando. Está construido en el centro del modelo y debe extenderse más allá del frente y la parte superior del modelo. Pero también tengo un desplazamiento de la superficie para saber qué tan lejos está del suelo en todo momento, y un flotante de cuánto se permite deslizarse hacia abajo antes de rebotar ligeramente, a la vez. Parece que estoy aplicando algún tipo de solución jodida para un problema de colisión del terreno, pero tengo mis razones.
De todos modos, debe aplicar fuerza a este objeto cápsula, y debe permanecer flotando sobre el suelo en todo momento. Eso no quiere decir que no pueda subir más, solo que no puede bajar más. La razón por la que necesita flotar (en mi caso) es porque en un cuerpo rígido y un motor de física de muñeco de trapo, las patas de mis unidades están animadas por procedimientos. Entonces, al aplicar una fuerza simple a la cápsula, las piernas de mi entidad se reposicionarán solas. ¡También tendrán sus aplicaciones de gravedad separadas! Lo que esto hace es permitir que si mi personaje está inclinado, un pie puede estar a una elevación más baja que el otro.
Así es exactamente como debes hacerlo. A juzgar por lo que estás preguntando eso es. Si desea omitir algunas características, obviamente está bien, especialmente si se trata de un RTS o FPS y nadie verá unidades de pies o se preocupará de todos modos. Pero, en general, la unidad debe tener un objeto de colisión PRINCIPAL que funcione con el movimiento del personaje casi exclusivamente.
Específicamente en 2D:
aún debe tener un punto principal, o simplemente algún tipo de referencia, para que el motor lo empuje, es para el movimiento de una unidad. Puede dar a cada unidad una subclase de ruta que tenga algunas ubicaciones a las que debe ir, puede especificarla en el código de nivel (por ejemplo, ubicación1 (x, y) ubicación2 (x, y), etc.) de la mejor manera (no (no sé en qué tipo de juego estás trabajando) probablemente sería especificar ubicaciones en el nivel y hacer que cada unidad las procese en el orden especificado por el nivel y después de que llegue a cada ubicación, haga que reemplace su ubicación deseada con el siguiente al que necesita llegar.
Hay muchas formas de modificarlo, como tener una lista de ubicaciones en primer lugar para cada unidad, ya que esto significaría que no todas las unidades tienen que ir a las mismas ubicaciones. Sin embargo, de la misma manera, también puede hacer esto en el código de nivel (unit1.location1 (x, y) unit1.location2 (x, y) grunt.l1 (x, y) knight.loc3 (x, y) lo que sea)
¡Solo unas pocas ideas! Le sugiero que lea la versión 3D a pesar de que es mucho menos relevante.
EDITAR: decidí proporcionar ambos para cualquiera que pueda leer esto (Sí, eso es cierto) ... (Originalmente solo leí tu pregunta y no me di cuenta de que era bastante específica en 2D hasta que la volví a leer>.>)