我不想进入复杂的三角函数来计算旋转和我的3D世界那样的东西所以gluLookAt似乎是一个不错的选择.根据文档,我需要做的就是为摄像机位置放置3个坐标,为我应该看到的位置设置3个坐标和"向上"位置.直到我认为它必须与屏幕顶部方向上的视线成直角才是最后的意义.
它根本不起作用.我有一些python代码.这是在我进入游戏的这一部分时初始化一些数据和一些模式代码的代码:
def init(self):
self.game_over = False
self.z = -30
self.x = 0
def transfer(self):
#Make OpenGL use 3D
game.engage_3d(45,0.1,100)
gluLookAt(0,0,-30,0,0,0,0,1,0)
Run Code Online (Sandbox Code Playgroud)
"game.engage_3d(45,0.1,100)"基本上将投影矩阵设置为具有45度视角和近和远坐标为0.1和100.
第一个gluLookAt很好地将相机放在正确的位置.
我有一个以(0,0,0)为中心绘制的立方体,没有gluLookAt它工作正常.在我绘制它之前,我有这个代码:
gluLookAt(self.x,0,self.z,0,0,0,0,1,0)
if game.key(KEY_UP):
self.z += 2.0/game.get_fps()
if game.key(KEY_DOWN):
self.z -= 2.0/game.get_fps()
if game.key(KEY_LEFT):
self.x += 2.0/game.get_fps()
if game.key(KEY_RIGHT):
self.x -= 2.0/game.get_fps()
Run Code Online (Sandbox Code Playgroud)
从那时起,向上位置应该始终与它始终是直角相同.我认为它会做的是用向上和向下键向前和向后移动z轴,用左右键向左和向右穿过x轴.实际发生的事情是,当我使用左右键时,立方体将围绕由键加速的"眼睛"旋转.向上键导致另一个立方体从无处穿过屏幕并击中第一个立方体.向下键将神秘的克隆立方体带回来.这可以与轮换相结合,以提供完全不同的结果,因为文档说会出现.
究竟是什么问题?
谢谢.