¿Cómo cambian las posiciones los sprites en los videojuegos?

Si te refieres a traducir un sprite en una pantalla, es bastante fácil. Solo necesita aumentar el conjunto de variables a la posición x del jugador (xPlayerPos). En Una fábula finlandesa , lo tenemos configurado cuando cada vez que se presiona la tecla D, el jugador se mueve hacia la derecha.

Si te refieres a hacer algo como esto:

Haz algo como esto:

Entonces eso se llama animación. También es bastante fácil y hace que el juego se vea mejor, pero lleva mucho más tiempo que el método anterior. Si bien el método anterior realmente mueve al jugador por la pantalla, parecería que solo está deslizando la primera imagen por el suelo. Eso se ve feo, por lo que debemos trabajar duro con nuestras animaciones. ¿Cómo funciona esto? Bueno, es como esas viejas cámaras de cine solían funcionar. Destella imágenes o cuadros del personaje, pero cada cuadro tiene una ligera variación. Debido a que los cambios son pequeños y cada cuadro no dura demasiado en la pantalla, obtenemos un movimiento más fluido. Sin embargo, en lugar de usar película, solo usamos software que puede separar las hojas de sprites como estas:

Una vez dividido, podemos configurar la animación para que se ejecute mientras se modifica xPlayerPos.

Parece que mis GIF no se muestran correctamente aquí, pero para comprender mejor de qué estoy hablando, puede descargar la demostración gratuita de A Finnish Fable aquí: A Finnish Fable de Mitomon.

Happy Deving!

use una máquina de estado para ingresar botones y luego actualice un vector 2D apropiadamente en la dirección correspondiente, el movimiento en sí se puede hacer usando animación de hoja de sprite.

if (sf :: Keyboard :: isKeyPressed (sf :: Keyboard :: W)) {
// Hacer algo si se presiona la tecla W.
}

Verifique el estado de entrada de la tecla para ver si se presionó cierta tecla.

if (sf :: Mouse :: isButtonPressed (sf :: Mouse :: Left)) {
// Hacer algo si se presiona el botón izquierdo del mouse.
}

Para la entrada de un mouse es casi lo mismo.

// Obtener la posición del mouse.
sf :: Vector2i mousePos = sf :: Mouse :: getPosition (); // 1
sf :: Vector2i mousePos = sf :: Mouse :: getPosition (m_window); // 2

// Configuración de la posición del mouse.
sf :: Mouse :: setPosition (sf :: Vector2i (0,0)); // 3
sf :: Mouse :: setPosition (sf :: Vector2i (0,0), m_window);

También puede obtener la posición del mouse con bastante facilidad. En la entrada correcta del botón, simplemente actualice la posición de su sprite, use una animación de hoja de sprite simple para eso, es un problema que se ha resuelto muchas veces, por lo que, en ese sentido, no debería ser difícil que le avise en la dirección correcta . Verifique el estado de entrada de su botón y luego actualice su vector de posición de sprite en consecuencia. La mayoría de las API tendrán un contenedor especializado para hacer esto, puede usar std::vector o sf::Vector si está usando SFML.

Los principios de ingeniería de software aplican, investigan y resuelven el problema.