如何定位两个对象相对于彼此

我正在尝试制作一个类似Kerbal Space Program的模块化车辆编辑器。 用户select在“工作区域”的中心产生的初始车辆部分。 要添加另一部分到最初的部分,用户点击并拖动列表中的一部分到“工作区”,然后拖动那部分到最初的一个。 当新零件上的一个节点与初始零件上的一个节点足够接近时,新零件将捕捉到初始零件上。 用户可以点击确认连接或将其拖放到其他位置。 为一个视觉例子 。

部件的产卵我没有问题。

为了移动环境中的部件,我有一个与相机平行的隐形平面,并旋转到始终朝向相机。 然后,我从鼠标绘制一条光线到飞机,并更新零件的位置到光线击中飞机的位置。

当新的部分处于正确的位置时,我将添加我使它成为我想要连接到的部分的子对象。

定位新部件相对于我要附加到的部分会发生问题。 我想使它像Kerbal Space Program一样,当新部件的连接节点在我所连接的部件的连接节点的范围内时,新部件的位置捕捉​​到我所连接的部件。

在这里输入图像说明

如果你的节点被放置在你的对象的边缘,这使得这一点更容易。 这是简单的vectormathalignment两个对象。

在这里输入图像说明

你有两点, AB 这些点是你的节点的位置,或者你想在一起的边上的点。

简单地计算它们之间的差异。 这个差异是你想要移动你的部分的数量,所以AB是相同的点。

如上图所示,黄线是点之间的距离,红线是移动深灰色部分以alignment它们所需的量。 这些是相同的路线。