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 を使用することです。あなたの場合、プレイヤーの位置を見ているようで、最後の 2 つのパラメーターで指定されている「上方向」を変更するだけです。

于 2010-01-18T23:11:57.677 に答える