Teniendo en cuenta la imagen de arriba con fichas divididas en cajas de 32x32, tengo una entidad que está marcada para 'aggro' a los jugadores cercanos que se acercan. Me gustaría que este monstruo persiga idealmente al jugador (y continúe persiguiendo al jugador por un tiempo). Actualmente, mi único movimiento es un interpolador simple para entidades remotas y esto funciona porque las brechas entre las actualizaciones de movimiento son bastante pequeñas.
No puedo decirle al cliente con éxito que el monstruo quiere moverse a la posición en la que se encuentra, ya que eso hará que la entidad se mueva mucho más rápido de lo que debería (esto probablemente se puede resolver usando algunas matemáticas para la copo de interpolación -eficaz), pero lo más importante es que no parece realista y puede cortar paredes. No quiero simular todo el movimiento en el servidor si se puede evitar ... aunque supongo que podría pero eso no resolvería el problema de recorte. Sospecho que la solución implica buscar rutas y enviar actualizaciones periódicas de los nodos del cliente y dejar que simulen el movimiento, pero no estoy seguro.
¡Gracias!
fuente
En realidad, esto es simple de hacer. La dirección del movimiento será la posición objetivo menos la posición actual. Todo lo que necesita hacer es escalar ese vector hasta la velocidad de movimiento que realmente desea. Repite cada cuadro.
Necesita simular el movimiento en el servidor. ¿De qué otra manera sabrás que todos los jugadores están viendo el mismo comportamiento?
Necesitará alguna ruta básica. A * es el estándar. Puede calcular una ruta hacia el objetivo y luego seguir esa ruta es simplemente un caso de establecer vectores de movimiento como el anterior. (O puede usar comportamientos de dirección como en la respuesta de Byte56, que es esencialmente lo mismo con algunos extras adicionales).
fuente