を助け願っています。
基本事項:あなたの位置とカメラの回転を保存したいと思うでしょう。 Z軸があなたの上軸であると仮定すると、矢印を使ってXとYだけを変更する必要があります。
カメラの向きはZ軸に沿った回転の合成として保存されます)とX軸(上下を見て)。
単純なクラス:
class Player
{
protected:
float3 Position; // Z-up
float2 CameraRotation; // X for turning, Y for up-down
public:
void MoveForward()
{
Position.X += -cosf(CameraRotation.X) * PLAYER_SPEED;
Position.Y += -sinf(CameraRotation.X) * PLAYER_SPEED;
}
// when using any other arrow, just add a multiply of PI/2 to the camera rotation
// PI for backwards, +PI/2 for left strafe and -PI/2 for right strafe.
// If you don't want to use mouse, use left and right arrow to modify camera rotation
// and MoveForward and Backward will look the same, having different signs.
};
「 - 」あなたはおそらくそれらを変更すること自由に感じ、行動のこの種のをお勧めしますので、SINFとcosf関数の前の兆しがあります。
カメラでは、フレーム間にマウスデルタを実装する必要があります。すべてのフレームで、マウスの位置を前の位置と比較します。その後、速度を見ながら回転させて乗算し、カメラの値に直接設定します。
これが役に立った。
ここから始めることができます:http://en.wikipedia.org/wiki/Euler_angles – BlackBear