我正在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