¿Se puede rotar una imagen en sdl en tiempo de juego?

Pues eso, quiero hacer un asteroids y la nave deberia de rotar segun se mueva, pero no se si se puede hacer porque todo el mundo dice que la funcion que rota en la libreria SDL_gfx es muy mala, es mentira? o hay algun otro metodo para girar imagenes?
Si, se puede, pero es muy lento. Lo normal en estos casos es utilizar polígonos 3D planos con la textura de la nave y rotarlos (para lo que necesitas OpenGL) o realizar tu a mano todas las rotaciones posibles de la nave en un programa de dibujo y utilizar una u otra dependiendo de hacia donde se mueva la nave.
bue al final queda bien con el sdl_gfx este, lo que tengo problemas es en como estoy haciendo un asteroids, la nave se mueve solo para delante, segun la "dirreccion" a la que esta apunte, y no se como puedo hacer que se desplace a la dirrecion que quiero la imagen a partir de un angulo u.u alguien tiene idea? creo que tengo que usar trigonometria a saco
Si, tienes que tirar de función de seno y coseno y combinar el desplazamiento del eje 'x' y del eje 'y'
grovestr escribió:bue al final queda bien con el sdl_gfx este, lo que tengo problemas es en como estoy haciendo un asteroids, la nave se mueve solo para delante, segun la "dirreccion" a la que esta apunte, y no se como puedo hacer que se desplace a la dirrecion que quiero la imagen a partir de un angulo u.u alguien tiene idea? creo que tengo que usar trigonometria a saco

Es muy fácil.

nave->x += nave->velocidad* cos(angulo);
nave->y -= nave->velocidad* sin(angulo);

Esto es para angulo 0 = derecha, angulo 90= arriba.
Para este tipo de cosas creo que lo mejor es tener un vector unitario que rote con la nave y multiplicarlo por la velocidad. Creo que es lo mas sencillo y la mejor manera de almacenar una dirección y una velocidad.
5 respuestas