我正在編寫xna的基本遊戲。我開始在玩家的右臂上放置一個物體(例如武器)。當我將角色向左或向右移動時。但是當我旋轉我的設備沒有正確定位。 我完全理解,有必要重新計算基於旋轉完成的新位置,但我不知道如何。 這裏是我的代碼和圖片 一千謝謝如何計算旋轉[XNA]後附加模型的位置?
//Function that will draw the current item selection in the player's hand
private void draw_itemActionInUse(Model modelInUse)
{
int handIndex = skinningData.BoneIndices["Hand_Right"];
Matrix[] worldTransforms = animationPlayer.GetWorldTransforms();
Matrix rotationMatrixCalcul = Matrix.CreateRotationY(player.Rotation.Y);
//Here I calculate the new position of the item, but it does not work
Vector3 newPosition= Vector3.Transform(new Vector3(player.Position.X, player.Position.Y + 4, player.Position.Z), rotationMatrixCalcul);
foreach (ModelMesh mesh in modelInUse.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.World =
worldTransforms[handIndex]
*
Matrix.CreateScale(2)
*
Matrix.CreateRotationY(player.Rotation.Y)
*
Matrix.CreateTranslation(newPosition);
effect.View = View_;
effect.Projection = Projection_;
effect.EnableDefaultLighting();
}
mesh.Draw();
}
}
圖A: 位置:X:0,Y:0; Z:0 角度:90 圖B: 位置:x:2; y:4; z:0 角度:90 圖A: 位置:X:1; Y:0; Z:1 角:35 圖B: 位置:如何演算該位置? 角:35
你見過這個嗎? http://stackoverflow.com/questions/13890820/rotating-objects-attached-to-other-objects/13893855#13893855 – neeKo
謝謝!你可以寫這個答案嗎? –