我正在尝试在 OpenGL 中制作一个自由漫游相机。当前,相机向前、向后、向左和向右移动。我的下一个目标是让它朝着你看到的方向移动。
到目前为止,这是我的代码:
float yawRad = Rotation -> y * (3.1415f/180);
float pitchRad = Rotation -> x * (3.1415f/180);
if(myInput.Keys[VK_W]) //Forward
{
curPos->x += sin(yawRad) * myInput.Sensitivity;
curPos->z -= cos(yawRad) * myInput.Sensitivity;
}
else if(myInput.Keys[VK_S]) //Backward
{
curPos->x -= sin(yawRad) * myInput.Sensitivity;
curPos->z += cos(yawRad) * myInput.Sensitivity;
}
if(myInput.Keys[VK_A]) //Left
{
curPos->x -= cos(yawRad) * myInput.Sensitivity;
curPos->z -= sin(yawRad) * myInput.Sensitivity;
}
else if(myInput.Keys[VK_D]) //Right
{
curPos->x += cos(yawRad) * myInput.Sensitivity;
curPos->z += sin(yawRad) * myInput.Sensitivity;
}
if(myInput.Keys[VK_E]) //Up
{
curPos->y += myInput.Sensitivity;
}
else if(myInput.Keys[VK_Q]) //Down
{
curPos->y -= myInput.Sensitivity;
}
myInput.Sensitivity
是一个由鼠标滚轮控制的浮点数,值增加/减少 0.0005。
Rotation
是存储 x,y,z 值(浮点数)的向量类。
我的问题是,如何修改我的代码以实现自由漫游?