2 Mesh.Box彼此之间

时间:2014-02-27 13:39:43

标签: c# directx managed-directx

我将directx与C#(MDX)一起使用。而我的任务就是将两个Box(用Mesh.Box创建)放在一起。

顶部框有:

宽度:200 身高:10 深度:1

底部框有:

宽度:10 身高:100 深度:1

两者一起应该看起来像

-----------
          -
          -
          -
          -

现在我遇到了问题,我不知道如何为两者进行正确的翻译:

顶盒:

d3dDevice.Transform.World = Matrix.Translation(0, 20, 30.0f);

底盒:

d3dDevice.Transform.World = Matrix.Translation(195, -40, 30.0f);

现在底部Box不在顶部框中。

我认为我必须计算Z,但我不知道我是怎么做到的。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

创建的框位于原点的中心。所以你唯一要做的就是调整x和y坐标。顶部框必须比底部单位bottom height / 2 + top height / 2单位高,左侧单位top width / 2 - bottom width / 2单位。所以:

//top box
d3dDevice.Transform.World = Matrix.Translation(-195, 55, 0);

//bottom box
d3dDevice.Transform.World = Matrix.Identity();

或者

//top box
d3dDevice.Transform.World = Matrix.Translation(0, 55, 0);

//bottom box
d3dDevice.Transform.World = Matrix.Translation(195, 0, 0);

除此之外,您还可以指定任何其他转换。只要你将它应用于两个盒子。例如。移动方框:

//top box
d3dDevice.Transform.World = Matrix.Translation(30, 75, 30);

//bottom box
d3dDevice.Transform.World = Matrix.Translation(225, 20, 30);