我正在制作一个 3d 游戏LWJGL
。在这个游戏中,每当我按下箭头键时,我都希望屏幕朝那个方向旋转,而不管当前方向如何。我正在努力在代码中实现这一点。使用基于旋转向量 3f 的三个glRotatef
函数并不能做到这一点。上下旋转工作,因为glRotatef(rotation.x, 1, 0, 0)
首先被调用,但只有当你不向上或向下看时,左右才有效。如果是,则围绕通用 y 轴旋转,然后相机旋转。我看到另一个实现可以使用gluLookAt()
,但我想我会遇到同样的问题。
编辑 我认为我通过改变调用 glRotatef() 的顺序来解决我的问题,具体取决于我想要旋转的方向。我认为这会起作用,因为在我的游戏中,我一次只会旋转一个轴。它在某种程度上起作用,但在某些方向上却没有。
if(updown){
glRotatef(rotation.x, 1, 0, 0);
glRotatef(rotation.y, 0, 1, 0);
} else if(leftright){
glRotatef(rotation.y, 0, 1, 0);
glRotatef(rotation.x, 1, 0, 0);
}
glTranslatef(position.x, position.y, position.z);