2016-10-20 1 views
0

Je suis nouveau sur XNA. Je viens de me coincé dans quelque chose - je dois incliner/retourner un caractère dans mon jeu que des moyens tournent autour de l'axe X et l'axe Z je peux faire le tour (pas en même temps!) - que des moyens tournent autour de l'axe Y. I possèdent la matrice de rotation, et le vecteur de position actuelle du personnage (également le parement/vecteur de direction qui peut être obtenu à partir de la matrice de rotation) I mis en oeuvre le tour-à-dire une rotation autour de l'axe Y en faisant tourner le vecteur faisant face autour de l'axe Y par R radians. Si je devais faire la rotation maintenant autour de l'axe X, par exemple, quelle serait l'approche? Par exemple, le passage d'une position debout à une position «Superman Flying» nécessiterait l'inclinaison du personnage ... La rotation y n'impliquait pas de changer la position du personnage, mais changeait juste le parement. Mais je suppose que pour X et Z, je dois aussi manipuler la position? S'il vous plaît montrez-moi quelques conseils.XNA - Tourner autour des axes X et Z 3D

Répondre

0

Compris! Il suffit de faire tourner le modèle autour des vecteurs droit/avant qui sont disponibles via la matrice de rotation. Trouvé le blog suivant très utile: https://stevehazen.wordpress.com/2010/02/15/matrix-basics-how-to-step-away-from-storing-an-orientation-as-3-angles/#comment-376

Comme pour le code, voici un échantillon: 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

content d'avoir pu aider ;-) –