Na7coldwater может быть прямо на замке подвеса. Используемые вами два угла, угол рыскания и угол наклона, являются углами Эйлера и, следовательно, подвержены блокировке подвески.
Вы можете избежать блокировки карданного подвеса, используя кватернионы или сохраняя текущее вращение, а затем построить матрицу дельта-вращения и умножить на предыдущую матрицу вращения.
т.е. где вы строите свою матрицу вращения, вы будете хранить дельту из предыдущего вращения, а не абсолютное вращение из исходного состояния модели.
1007 * например *
D3DXMatrixRotationAxis(&playeryaw, &up, yawanglethisframe);
D3DXMatrixRotationAxis(&playerpitch, &right, pitchanglethisframe);
playerrot = playerrot * (playeryaw * playerpitch); // This line has changed!!
D3DXMatrixTranslation(&playertrans, pos.x, pos.y, pos.z);
D3DXMatrixScaling(&playerscale, 0.05 / ((float)i + 1), 0.05 / ((float)i + 1), 0.05 / ((float)i + 1));
playercom = playerscale * playerrot * playertrans;
device->SetTransform(D3DTS_WORLD, &playercom);
playermesh.render();
где playerrot хранится от кадра к кадру.