好的,我想首先说我知道我实际上并没有移动相机,但更容易解释这种方式。
我的问题是我正试图用自上而下的2d RPG中的角色移动相机,我找不到正确的方法来做到这一点。我知道glTranslate()然后我只能使用速度而不是x和y坐标。我不确定如何移动相机记住三角洲。我甚至不知道glTranslate()是否是我应该使用的方法。
如果我没有任何意义(很可能),这是我的一些代码。
我的测试循环:
while(!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)&&!Display.isCloseRequested())
{
glClear(GL11.GL_COLOR_BUFFER_BIT);
delta=getDelta();
update(delta);
glTranslatef(speedx, speedy, 0);
level1.checkCurrent(x, y);
level1.draw();
Display.update();
Display.sync(60);
}
这是我设定速度的地方:
if(Keyboard.isKeyDown(Keyboard.KEY_DOWN))
{
y+=0.5*delta;
screenY+=0.5*delta;
speedy=(int) (-0.5*delta);
direction=2;
}
else if(Keyboard.isKeyDown(Keyboard.KEY_UP))
{
y-=0.5*delta;
screenY-=0.5*delta;
speedy=(int) (0.5*delta);
direction=8;
}
else
speedy=0;
答案 0 :(得分:1)
现在你正在将OpenGL视为场景图。但OpenGL只是为了在屏幕上绘制内容。无论你做什么,你都应该在某种程度上考虑你的问题,好像所有其他基础设施都没有。
你想加速一个物体?那么,你需要随着时间的推移增加一些速度变量,速度变量乘以时间会增加位置。本质上牛顿的运动定律:
a = dv/dt => v = a*t + v_0
v = dr/dt => r = v*t + r_0 = a*t² + v_0*t + r_0
您可以评估每个对象。然后,当绘制动画时,您可以使用状态相应地放置对象几何体。