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


Anmelden zum Antworten