Domanda

Sto facendo un gioco 2D. Voglio essere in grado di rendere una texture sullo schermo dopo la rotazione è una certa quantità attorno a un punto centrale. Fondamentalmente si tratta di una rotazione attorno livello di un giocatore. La posizione del giocatore è il punto di rotazione e la direzione del giocatore come l'angolo. Questo lavoro Codice abituato:

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

Un modo per farlo funzionare? Grazie.

È stato utile?

Soluzione

provare a invertire

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

e

glRotatef(rotation,0,0,1)

si sta traducendo al giocatore, ma poi ruotando circa l'origine (non il giocatore)

libro rosso : Ruota

Altri suggerimenti

Se non avete una buona ragione per fare altrimenti, avrei lasciato il codice di disegno da solo, e basta cambiare l'angolazione della telecamera. Probabilmente il modo più semplice per farlo è utilizzare gluLookAt. Nel tuo caso, ti pare essere guardando la posizione del giocatore, e basta cambiare il "up direzione", che è dato in questi ultimi due parametri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top