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
マウス ホイールで制御される float で、値は 0.0005 増加/減少します。
Rotation
x、y、z 値 (float) を格納するベクトル クラスです。
私の質問は、フリー ローミングを実現するためにコードを変更するにはどうすればよいかということです。