我将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,但我不知道我是怎么做到的。有人能帮助我吗?
答案 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);