我在做一个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()

任何办法让它工作?谢谢你。

有帮助吗?

解决方案

试图扭转

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

glRotatef(rotation,0,0,1)

你翻译的球员,但随后转有关来源(不播放器)

图从 红色的书: rotate

其他提示

除非你有一个很好的理由不这样做,我会独自离开绘图代码,只是更改摄像机角度。可能做到这一点的最简单方法是使用gluLookAt。在你的情况,你会很明显地看玩家的位置,只需更改“向上方向”,这是在过去的两个参数给出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top