Frage

Ich mache ein Spiel 2D. Ich möchte in der Lage, eine Textur auf dem Bildschirm zu machen, nachdem er einen bestimmten Betrag um einen Mittelpunkt dreht. Im Grunde ist dies eine Ebene Rotation um einen Spieler. Der Spieler Position ist der Drehpunkt und die Richtung des Spielers, wenn der Winkel. Dieser Code wird nicht funktionieren:

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

Jede Art und Weise es zum Laufen zu bringen? Danke.

War es hilfreich?

Lösung

versuchen Umkehr

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

und

glRotatef(rotation,0,0,1)

Sie übersetzen an den Spieler, aber dann eine Drehung um den Ursprung (nicht der Spieler)

Illustration aus dem roten Buch : drehen

Andere Tipps

Es sei denn, Sie haben einen guten Grund, anders zu handeln, würde ich die Zeichnung Code allein lassen und nur den Kamerawinkel ändern. Die wahrscheinlich einfachste Weg, dies zu tun, ist die Verwendung gluLookAt. In Ihrem Fall, werden Sie scheinbar auf die Position des Spielers suchen werden, und ändern Sie einfach die „Aufwärtsrichtung“, die in den letzten beiden Parameter angegeben wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top