1
研究的另一個3D遊戲GL的代碼,我決定嘗試創建一個非常簡單的,走動之類的話。OpenGL的:相機theta和縮放
一切似乎工作確定,但只在一個軸上。當一個方向向前和向後走時,一切都很好。雖然,如果你轉過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)
而且,相機THETA旋轉:
if event.type == MOUSEMOTION:
self.camtheta -= 2 * event.rel[0] #Subtracting 2 * the relative moved pixels from the last position.
什麼會導致這樣的問題呢?
謝謝你的提示,但我不認爲這涉及到它面對的方向移動相機。 – 2012-07-13 16:35:53
是的,它的確如此。如果你可以看到我的老C++代碼,[這裏是你如何使用gluLookAt(https://bitbucket.org/thrustmaster/firstpersonshooter/src/393e18698c3e/Player.cpp)在3D空間走動。是的,我明白這不是一個直接的答覆,你將不得不挖掘一點。如果你不能,請告訴我,我會在答覆中更新我的答案。 – SuperSaiyan 2012-07-13 16:43:36