2016-10-20 4 views
0

Я новичок в XNA. Я просто застрял во что-то - мне нужно наклонять/переворачивать персонажа в моей игре, что означает поворот вокруг оси X и оси Z (не одновременно!) Я могу сделать поворот - это означает, что он вращается вокруг оси Y. У меня есть матрица вращения и вектор текущей позиции символа (также вектор направления/направления, который может быть получен из матрицы поворота). Я осуществил поворот, то есть вращение вокруг оси Y, вращая вектор обратки вокруг оси Y радиусами R. Если бы я теперь сделал поворот вокруг оси X, например, каким будет подход? Например, переход от стоячего положения к позиции «Супермен летания» понадобится для наклона персонажа ... Вращение y не связано с изменением положения персонажа, просто изменило облицовку. Но я полагаю, что для X и z мне тоже нужно манипулировать позицией? Пожалуйста, покажите мне несколько советов.XNA - вращение вокруг оси X и Z 3D

ответ

0

Выяснил это! Просто пришлось повернуть модель вокруг правых/прямых векторов, доступных через матрицу вращения. Найдено следующий блог очень полезным: https://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/#comment-376

Что касается кода, вот пример: Vector3 rightVector = target.CurrentModelMatrix.Right; var rotMatrix = Matrix.CreateFromAxisAngle(rightVector , (float)GetRadianAngle(10));// Will tilt the character forward around the right vector target.CurrentModelMatrix *= rotMatrix;

+0

рад, что я мог бы помочь ;-) –

Смежные вопросы