我是初学者在OpenGL中制作游戏。我画了一张地图(这是世界,玩家可以移动),现在我想做,那个相机跟随玩家(玩家在屏幕的中心)。 我做过这样的事情:
GLU.gluLookAt(gl,
this.x, this.y, 0,
this.x, this.y, 1.0f,
0.0f, 0.0f, 0.0f);
this.x和this.y是玩家的坐标。不幸的是它不起作用:(没有任何反应。 这是2d游戏,所以没有任何等待。
答案 0 :(得分:1)
你可以通过几种方式做到这一点,但最简单的可能就是调用
gl.glTranslatef( cameraX, cameraY );
在glLoadIdentity调用之后但在渲染帧之前。
glTranslatef具有累积效果,因此场景中的所有内容都将被cameraX和cameraY偏移。
一个问题是,要实现这一点,你需要使用glPushMatrix和glPopMatrix,而不是在渲染每个对象之前调用glLoadIdentity,否则你会丢失相机的翻译。
只是旁注,如果你打算拥有一个巨大的世界,你应该让玩家的位置为0,0并让你的世界移动而不是你的玩家。如果它是一个小游戏不是一个大问题,但是当对象具有非常大的x和y值时,你可能会遇到浮点舍入错误的问题。这可能不是你遇到的事情,但我很高兴知道。