我是XNA的新手 . 我刚陷入困境 - 我必须在游戏中倾斜/翻转一个角色,这意味着绕X轴和Z轴旋转(不同时!)我可以转弯 - 这意味着围绕Y轴旋转 . 我有旋转矩阵和角色的当前位置向量(也可以是从旋转矩阵获得的面向/方向向量)我实现了转弯,即通过围绕Y轴将面对向量旋转R弧度来围绕Y轴旋转 . 例如,如果我现在围绕X轴做旋转,那会是什么方法呢?例如,从站立位置变为“超人飞行”位置需要角色倾斜... y旋转不涉及改变角色的位置,只是改变了面部 . 但我想对于X和Z,我也必须操纵位置?请给我一些指导 .
1 回答
弄清楚了!只需围绕通过旋转矩阵可用的右/前向量旋转模型 . 发现以下博客文章非常有用: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;