0

我将 directx 与 C# (MDX) 一起使用。我的任务就是将两个盒子(用 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);

现在底盒不直接在顶盒之间。

我认为我必须计算 Z 但我不知道我是如何做到的。有人能帮我吗?

4

1 回答 1

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);
于 2014-02-27T14:27:40.137 回答