我有一个位于 (0.0, 0.0, -39.0) 的对象并且从不移动,场景的其余部分相对于该对象移动;我希望相机以相同的方向看这个物体。当我这样做时:
gluLookAt(0.0, 120.0, 10.0, 0.0, 0.0, -39.0, 0.0, 0.0, 1.0);
drawobject();
glTranslatef(0.0, y, 0.0);
glRotatef(angle, 0.0, 0.0, 1.0);
drawScene();
它不是围绕对象(实际上是围绕世界 z 轴)旋转场景,而是围绕其中心旋转。如果我更改平移和旋转的顺序,那么它会正确地围绕对象旋转,但它会在场景 y 方向的方向上平移(我希望它向世界 y 方向平移)。我想我知道为什么会发生这种情况,但我不知道如何解决它。我想我把自己弄糊涂了XD。
我应该补充一点,我使用箭头键从用户那里获取输入以更改“y”和“角度”。所以,基本上如果这个对象是玩家,我希望相机一直看着它的背面,玩家可以使用键盘四处移动。但是,我决定移动场景,而不是移动玩家。我不确定这是否是标准方法。