我是JOGL的新手,我正在开发一款游戏。我有一枚火箭,背景中的星星和行星。我希望火箭在屏幕底部保持静止,按下GO按钮,然后行星开始下降,火箭要避开。
我一直在打击,行星落下(通过翻译),火箭也下降了。我知道为什么这会在相机移动时发生,所以整个世界都在移动。我一直在尝试使用pushMatrix和popMatrix,但没有运气。
即
if (goButtonPressed)
{
//gl.glTranslatef(0.0f,0.3f,0f); // this line just keeps the whole thing still
drawRocket(gl); // I was trying to 'undo' the translation
gl.glPushMatrix();
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glTranslatef(0.0f, -0.3f, 0f);
gl.glPopMatrix();
}
我想在opengl做什么?我让它太难了吗?
答案 0 :(得分:1)
如何将这些信息存储在您自己的代码中,然后将绝对坐标传递给JOGL,而不是依靠投影矩阵来保持火箭位置的状态?然后,可以使用更明显的代码(例如rocket.y += dy;
。
作为一小部分,投影矩阵不打算用于空间变换。请使用GL_MODELVIEW来避免细微问题。
答案 1 :(得分:0)
不完全是你问题的答案,但如果你想用Java中的opengl制作游戏,你应该看一下JMonkeyEngine。
您尝试做的事情当然可以使用opengl,并且使用JMonkeyEngine非常容易。他们在自己的网站上有很多教程等。