我正在尝试使用 gluLookAt 方法设置 3D 相机。所以我有一个 10x10x10 的立方体,现在我想在那个立方体内移动相机。我有类似的东西:
gluLookAt( camera->x,camera->y,camera->z, camera->eyeX, camera->eyeY, camera->eyeZ, 0, 1, 0 );
现在我正在前进/后退:
if(GetKeyState(VK_UP) <0)
{
camera->x += sin(camera->angleX)*0.1f;
camera->eyeX += sin(camera->angleX)*0.1f;
camera->z -= cos(camera->angleX)*0.1f;
camera->eyeZ -= cos(camera->angleX)*0.1f;
}
现在我向左/向右旋转:
if(GetKeyState(VK_LEFT) <0)
{
camera->angleX -=0.1f;
camera->eyeX = sin(camera->angleX) +camera->x;
camera->eyeZ = -cos(camera->angleX) + camera->z;
}
这样一切正常,但现在我想在按下 SHIFT 按钮时向上/向下旋转。所以我有这样的事情:
if(GetKeyState(VK_SHIFT) <0)
{
if(GetKeyState(VK_UP)<0)
{
camera->angleY +=0.1f;
camera->eyeY = sin(camera->angleY) +camera->y;
}
实际上发生了一些奇怪的事情。相机一直在上下跳动,并缓慢地向前移动。另外,我想补充一点,当我向上看并向前移动时,相机实际上会到达它看起来的地方。所以基本上情况是这样的:我是一个被困在一个 10x10x10 立方体中的幽灵,可以走到任何我想去的地方。我想移动到右上角?我只是去那里。所以......任何想法我应该改变/添加什么?