Question

Je fais un jeu en 2D. Je veux être en mesure de rendre une texture à l'écran après la rotation d'une certaine quantité autour d'un point central. En gros, cela est une rotation de niveau autour d'un joueur. La position de joueur étant le point de rotation et la direction du joueur comme étant l'angle. Ce code wont travail:

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()

Une manière de le faire fonctionner? Merci.

Était-ce utile?

La solution

inversez

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

et

glRotatef(rotation,0,0,1)

vous traduisez au joueur, mais tournant autour de l'origine (pas le joueur)

Illustration du livre rouge : rotate

Autres conseils

Sauf si vous avez une bonne raison de faire autrement, je quitterais le code de dessin seul, et il suffit de changer l'angle de la caméra. Probablement la meilleure façon de le faire est d'utiliser gluLookAt. Dans votre cas, vous semble-t-regarderez la position du joueur, et il suffit de changer la « direction jusqu'à », qui est donné dans les deux derniers paramètres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top