Espero que todos hayamos jugado a Zelda: un enlace al pasado, corrígeme si me equivoco, pero quiero emular ese tipo de movimiento 2D de arriba hacia abajo con un toque de corrección. Se ha hecho en otros juegos, pero creo que esta referencia sería la más fácil de relacionar. Más específicamente, el tipo de movimiento y corrección del que estoy hablando es:
- El movimiento flotante no se limita al movimiento basado en fichas como Pokemon y otros juegos donde un toque de la plataforma de movimiento te mueve un cuadrado en esa dirección cardinal. Este movimiento flotante debería ser capaz de lograr un movimiento diagonal.
- Si caminas hacia el oeste y llegas a un muro diagonal en dirección noreste / suroeste, eres corregido a un movimiento suroeste incluso si continúas presionando a la izquierda (oeste) en el controlador. Esto debería funcionar para ambas diagonales que corrigen en ambas direcciones.
- Si está a unos pocos píxeles de caminar directamente hacia una puerta o pasillo, se le corrige al caminar por el pasillo o por el pasillo, es decir, chocar contra la esquina hace que lo empujen hacia el pasillo / puerta.
He buscado formas eficientes de lograr esto y no he tenido suerte. Para ser claros, estoy hablando del movimiento del personaje humano, no del movimiento de un NPC. ¿Están disponibles sus recursos en este tipo de movimiento? ¿Ecuaciones o algoritmos explicados en una wiki o algo así?
Estoy usando el Marco XNA, ¿hay algo en él para ayudar con esto?
Como una posible respuesta para el segundo punto es proyectar el vector de movimiento del jugador a lo largo del vector de la pared usando un producto de puntos (ab * normalizado (b)). Luego obtienes un vector que te dice qué tan lejos mover al jugador en la dirección de la pared, y si mueves al jugador por ese vector, obtienes un 'deslizamiento' a lo largo de la pared. Me funcionó bien en un proyecto de juego anterior.
fuente
Gran respuesta para Josh, pero agregaré algunas sugerencias: - Para obtener más información sobre el deslizamiento contra las paredes, consulte mi pregunta - de esta respuesta logré que funcione realmente bien. - Si no me equivoco, al subir por la pantalla, Link se alineará fácilmente con la cuadrícula horizontal más cercana. De esta manera, cuando llegue a las puertas, es más probable que esté correctamente alineado (podría estar equivocado). - Para que sea más fácil pasar por las puertas, asegúrate de que la caja de colisión de tu personaje sea mucho más pequeña que el ancho de la puerta.
fuente
Para corregir las puertas de entrada, puede hacer que el objeto de colisión para la puerta sea un poco más grande que la imagen de la puerta. Esto resultaría en el mismo efecto propuesto por Josh, pero sin tener que calcular la proximidad al rectángulo de colisión del muro.
fuente