Pregunta

Estoy haciendo un juego en 2D. Quiero ser capaz de hacer una textura en la pantalla después de girar una cierta cantidad en torno a un punto central. Básicamente se trata de una rotación alrededor de un jugador de nivel. La posición del jugador siendo el punto de rotación y la dirección del jugador como el ángulo. Este trabajo suele código:

def draw_texture(texture,offset,size,a,rounded,rotation,point):
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity() #Loads model matrix
    glColor4f(1,1,1,float(a)/255.0)
    glTranslatef(point[0],point[1],0)
    glRotatef(rotation,0,0,1)
    glBindTexture(GL_TEXTURE_2D, texture)
    if rounded == 0:
        glBegin(GL_QUADS)
        glTexCoord2f(0.0, 0.0)
        glVertex2i(*offset) #Top Left
        glTexCoord2f(0.0, 1.0)
        glVertex2i(offset[0],offset[1] + size[1]) #Bottom Left
        glTexCoord2f(1.0, 1.0)
        glVertex2i(offset[0] + size[0],offset[1] + size[1]) #Bottom, Right
        glTexCoord2f(1.0, 0.0)
        glVertex2i(offset[0] + size[0],offset[1]) #Top, Right
        glEnd()
    else:
        #Nothing important here
    glEnd()

Cualquier manera de conseguir que funcione? Gracias.

¿Fue útil?

Solución

intente invertir

glTranslatef(point[0],point[1],0)

y

glRotatef(rotation,0,0,1)

estás traduciendo al jugador, pero entonces gira alrededor del origen (no el jugador)

libro rojo : rotar

Otros consejos

A menos que tenga una buena razón para no hacerlo, me gustaría dejar el código de dibujo solo, y sólo cambiar el ángulo de la cámara. Probablemente la forma más sencilla de hacerlo es utilizar gluLookAt. En su caso, al parecer, le busca en la posición del jugador, y sólo cambiar el "encima de la dirección", que se da en los dos últimos parámetros.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top