CScreenStage::CScreenStage() : m_fHeliAngle(0), m_fPropAngle(0), m_fCameraAngle(0) { ・ ・ ・ }
void CScreenStage::Move(void) { // カメラの処理
// Aキーで左回り[反時計回り]に回転 if(g_pInput->IsKeyDirect(4)) { m_fCameraAngle += 0.03f; if(m_fCameraAngle > PI) m_fCameraAngle -= 2 * PI; }
// Sキーで右回り[時計回り]に回転 if(g_pInput->IsKeyDirect(5)) { m_fCameraAngle -= 0.03f; if(m_fCameraAngle < -PI) m_fCameraAngle += 2 * PI; }
// ←キーが押されたら、ヘリを左に回転 if(g_pInput->GetXPosDirect() < -500) { m_fHeliAngle
+= 0.03f; if(m_fHeliAngle > PI) m_fHeliAngle -= 2 * PI; }
// →キーが押されたら、ヘリを右に回転 if(g_pInput->GetXPosDirect() > 500) { m_fHeliAngle -= 0.03f; if(m_fHeliAngle < -PI) m_fHeliAngle += 2 * PI; }
// ↑キーが押されたら、ヘリを進行方向に移動 if(g_pInput->GetYPosDirect() < -500) {
m_vec3HeliPos.x += 10.0f * sinf(m_fHeliAngle); m_vec3HeliPos.z += 10.0f *
cosf(m_fHeliAngle); }
// 視点を計算 m_vec3Eye.x = m_vec3HeliPos.x + 800 * sinf(m_fCameraAngle);
m_vec3Eye.z = m_vec3HeliPos.z + 800 * cosf(m_fCameraAngle);
// 注視点を計算 m_vec3At.x = m_vec3HeliPos.x; m_vec3At.z = m_vec3HeliPos.z;
// ビュー・トランスフォーム m_Camera.View(&m_vec3Eye, &m_vec3At);
D3DXMATRIX m; // 行列(一時保存用)
// ヘリの行列を作成 D3DXMatrixRotationY(&m_MtrxHeli, m_fHeliAngle); D3DXMatrixTranslation(&m, m_vec3HeliPos.x, m_vec3HeliPos.y, m_vec3HeliPos.z); m_MtrxHeli *= m;
// プロペラを回転させる m_fPropAngle += 0.5f; if(m_fPropAngle > PI) m_fPropAngle -= 2
* PI;
// プロペラの行列を作成 D3DXMatrixRotationY(&m_MtrxProp, m_fPropAngle); m_MtrxProp *= m_MtrxHeli; }