私はゲーム開発に新しい経験があり、3D地形のモデリングに成功し、ゲーム世界で自由に動き回ることができるカメラを持っていますが、私は把握することができません。3Dゲームでのストラッピング/サイドステッピングの処理
次のように現在、/後方前方に移動するために、私はメソッドを持っています:
のVector3は、単純なX、Y、Zの構造体であり、ラジアン度があるvoid Player::moveForward(const float speed)
{
Vector3 pos = getPosition();
float cosYaw = cosf(degreesToRadians(m_yaw));
float sinYaw = sinf(degreesToRadians(m_yaw));
pos.x += float(cosYaw)*speed;
pos.z += float(sinYaw)*speed;
setPosition(pos);
}
:へ
inline float degreesToRadians(const float degrees) {
const float PIOver180 = 3.14159f/180.0f;
return degrees * PIOver180;
}
を前進するハンドル私は単純に引数に正のfloatを置き、負のfloatを後ろに移動します。
私はコースの前後に移動することができます - 私はまた、位置のpos.y
を変更することによって上方に移動することができますが、左右のステップ/邪魔をする方法を理解できません。私はヨーは360/0、270、180又はしかしどこにでもそれらが角度と90が設けられてサイドステップにできることでx
とz
結果を反転
は/転送-サイドステップ/後方サイドステップ又は前進するカメラを引き起こします後方に。
とにかく、これは私は紙の上で解決策を見つけることを試み、私を悩ませていた - これは働いていた:
inline float degreesToStrafe(const float degrees)
{
const float PIOver90 = 3.14159f/90.0f;
return degrees * PIOver90;
}
をしかし、ゲームでは、これは正確にx
とz
結果を交換すると同じです。
ご協力いただければ幸いです。私はこれについてウェブ上で何かを見つけようと苦労しましたが、私は間違って検索していた可能性があります!
ありがとうございました! – krslynx
パーフェクト。ありがとう=] – Hobbes