我遇到一个模型附加到另一个模型上的“骨”准确的难度。 我搜索了几个论坛但没有结果。我看到很多人都问了同样的问题,但没有真正的结果看不到任何回应。 发现线程:
https://gamedev.stackexchange.com/questions/21129/how-to-attach-two-xna-models-together
https://stackoverflow.com/questions/11391852/attach-model-xna
但我认为这是可能的。
这是我的代码示例附加了我的播放器手的“立方体”
private void draw_itemActionAttached(Model modelInUse)
{
Matrix[] Model1TransfoMatrix = new Matrix[this.player.Model.Bones.Count];
this.player.Model.CopyAbsoluteBoneTransformsTo(Model1TransfoMatrix);
foreach (ModelMesh mesh in modelInUse.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
Matrix model2Transform = Matrix.CreateScale(1f) * Matrix.CreateFromYawPitchRoll(0, 0, 0);
effect.World = model2Transform * Model1TransfoMatrix[0]; //root bone index
effect.View = arcadia.camera.View;
effect.Projection = arcadia.camera.Projection;
}
mesh.Draw();
}
}
答案 0 :(得分:2)
这种方法可能有所不同,但通常的做法是将一个或多个骨骼添加到“可装备”中,无论它们是否为手持设备。这样,对象的骨骼可以在运行时添加到播放器中,从而“装备”所需位置的项目。
一些阅读:http://en.csharp-online.net/XNA_Game_Programming%E2%80%94PlayerWeapon