Estoy haciendo un juego isométrico. Cuando el jugador intenta caminar diagonalmente hacia una pared, quiero que se deslicen suavemente sobre ella, de modo que se use cualquier parte del movimiento que sea legal, y se deseche cualquier cosa en la dirección de lo normal. Las paredes pueden ser de cualquier ángulo, no solo verticales u horizontales, y el jugador tiene movimiento 360.
Siento que casi estoy allí, pero no puedo poner la última pieza en su lugar.
Actualización: ¡buenas noticias para todos! Lo tengo funcionando. Pero ... estoy un poco confundido sobre lo que debería normalizar y lo que no. Lo normal solo necesita ser un vector unitario, ¿verdad? pero luego estoy mezclando eso con mi entrada, así que estoy normalizando eso, ¿me equivoco?
Por cierto, también descubrí que necesito empujar al jugador 1 píxel en la dirección normal, para que no se atasque en las cosas, funciona bien.
fuente
desiredMotion
resultados realmente extraños . ¿Alguna vez lograste que esto funcionara?Si bien es sencillo eliminar el componente del movimiento en la dirección de lo normal, puede adaptarse a su juego para rotar el vector de movimiento. Por ejemplo, en un juego de acción en tercera persona, puede ser fácil quedar un poco colgado en las paredes y otros límites, por lo que puede hacer algunas conjeturas sobre lo que el jugador pretende.
fuente