Bon je crois que je suis arrivé à faire marcher un peu le binz, le seul problème c'est que pour faire le mouvement souhaité il faut le faire puis faire son opposé.
Par exemple, je veux tourner à droite: je dois tourner à droite puis tourner à gauche, si je tourne que à droite ça marche pas...
Le problème, c'est que je n'ai jamais étudié les matrices donc c'est un peu dur de les utiliser.
Si vous pouviez m'aider encore un peu
Voici le code actuel:
class CCamera
{
public:
void Rotate(double x, double y, double z);
void Move(float x, float y, float z);
};
void CCamera::Move(float x, float y, float z)
{
D3DXMATRIX mtrans;
D3DXMatrixTranslation(&mtrans, x, y, z);
D3DXMatrixMultiply(&ViewMatrix, &mtrans, &ViewMatrix);
D3DXMatrixInverse(&ViewMatrix, NULL, &ViewMatrix);
g_lpD3DDevice->SetTransform(D3DTS_VIEW, &ViewMatrix);
}
void CCamera::Rotate(double x, double y, double z)
{
D3DXMATRIX mrot;
D3DXMatrixRotationYawPitchRoll(&mrot, y, x, z);
D3DXMatrixMultiply(&ViewMatrix, &mrot, &ViewMatrix);
D3DXMatrixInverse(&ViewMatrix, NULL, &ViewMatrix);
g_lpD3DDevice->SetTransform(D3DTS_VIEW, &ViewMatrix);
}