3

我正在制作一个2D游戏。我希望能够在围绕中心点旋转一定量后在屏幕上渲染纹理。基本上这是针对玩家的关卡轮换。玩家位置为旋转点,玩家的方向为角度。此代码不起作用:

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

有什么办法让它工作吗?谢谢你。

4

2 回答 2

2

尝试倒车

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

glRotatef(rotation,0,0,1)

您正在翻译到播放器,但随后围绕原点(而不是播放器)旋转

红皮书插图:旋转

于 2010-01-18T23:09:58.290 回答
0

除非您有充分的理由不这样做,否则我将不理会绘图代码,只需更改相机角度即可。可能最简单的方法是使用 gluLookAt。在您的情况下,您显然会查看玩家的位置,只需更改最后两个参数中给出的“向上方向”。

于 2010-01-18T23:11:57.677 回答