Fehler bei der Kameraprogrammierung
-
Hi
Ich bin nun daran am Programmieren einer Kamerasteuerung. Doch irgendwie geht diese nicht zum Bewegen. Warum?
Hier ist ein Codeausschnitt:
void CGame::Render() { g_pD3D->d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); g_pD3D->d3ddev->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); g_pD3D->d3ddev->SetRenderState(D3DRS_LIGHTING, TRUE); g_pD3D->d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE); g_pD3D->d3ddev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID); g_pD3D->d3ddev->BeginScene(); pCamera->AdjustCamera(&vCameraPosition, &D3DXVECTOR3(sinf(CameraAngle), 0.0f, cosf(CameraAngle))); g_pD3D->d3ddev->SetFVF(FVF3D); g_pD3D->d3ddev->SetRenderState(D3DRS_LIGHTING, FALSE); g_pD3D->d3ddev->SetRenderState(D3DRS_ZENABLE, FALSE); g_pD3D->d3ddev->SetRenderState(D3DRS_ZWRITEENABLE, FALSE); D3DXMatrixRotationX(&mRotation, fRotation); g_pD3D->d3ddev->SetTransform(D3DTS_WORLD, &mRotation); g_pD3D->d3ddev->SetTexture(0, pEnvoirment); // SkyBox // g_pD3D->d3ddev->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 8, 12, pSkyBoxIndices, D3DFMT_INDEX16, pSkyBoxVertices, sizeof(VERTEX3D)); g_pD3D->d3ddev->SetTexture(0, NULL); g_pD3D->d3ddev->SetFVF(CUSTOMFVF); // Block // g_pD3D->d3ddev->SetTexture(0, pBlockTexture); pBlockModel->DrawModel(&Block, 0.0f, 0.0f, 0.0f); g_pD3D->d3ddev->SetTexture(0, NULL); FontPosition.top = 100; FontPosition.left = 0; FontPosition.right = SCREEN_WIDTH; FontPosition.bottom = SCREEN_HEIGHT; pFont->DrawText(NULL,L"SecondChance", -1, &FontPosition, DT_CENTER, D3DCOLOR_XRGB(255, 255, 255)); g_pD3D->d3ddev->SetRenderState(D3DRS_LIGHTING, TRUE); g_pD3D->d3ddev->SetRenderState(D3DRS_ZENABLE, TRUE); g_pD3D->d3ddev->SetRenderState(D3DRS_ZWRITEENABLE, TRUE); g_pD3D->d3ddev->EndScene(); g_pD3D->d3ddev->Present(NULL, NULL, NULL, NULL); } void CGame::Move() { pInput->GetKeys(&Keys[0]); pInput->GetMouse(&Mouse); vCameraDirection = D3DXVECTOR3(sinf(CameraAngle), 0.0f, cosf(CameraAngle)); if(Keys(DIK_RIGHT)) { CameraAngle -= D3DXToRadian(45); } else if(Keys[DIK_RIGHT]) { CameraAngle += D3DXToRadian(45); } else if(Keys(DIK_UP)) { vCameraPosition += vCameraDirection * 5.0f; } else if(Keys[DIK_DOWN]) { vCameraPosition -= vCameraDirection * 5.0f; } }
Warum funktioniert diese Kamera nicht?
Kann mir jemand helfen?
Gruss Patrick