別の 3D GL ゲームのコードを調べて、非常にシンプルで歩き回るようなゲームを作成することにしました。
すべてが正常に動作しているように見えますが、1 つの軸でのみ動作します。一方向に前進後退するときは、すべて順調です。ただし、90 度回転して前後に歩き始めると、後進は前進として機能し、前進は後退として機能します。
地面の描画コードは次のとおりです。
def drawground(self):
glPushMatrix()
glTranslate(-1, -1, -3)
glRotate(90, True, False, False)
glBegin(GL_QUADS)
glColor(0.6, 0.6, 0.6)
glVertex(0, 0)
glVertex(0, self.winmain.world.xlen)
glVertex(self.winmain.world.ylen, self.winmain.world.xlen)
glVertex(self.winmain.world.ylen, 0)
glEnd()
glPopMatrix()
移動コード:
if pygame.key.get_pressed()[K_w]:
self.campos[0] -= 0.005*math.sin(self.camtheta * 3.14159 / 180)
self.campos[1] -= 0.005*math.cos(self.camtheta * 3.14159 / 180)
if pygame.key.get_pressed()[K_s]:
self.campos[0] += 0.005*math.sin(self.camtheta * 3.14159 / 180)
self.campos[1] += 0.005*math.cos(self.camtheta * 3.14159 / 180)
そして、カメラのシータ回転:
if event.type == MOUSEMOTION:
self.camtheta -= 2 * event.rel[0] #Subtracting 2 * the relative moved pixels from the last position.
この問題の原因は何ですか?