摘要:
1.定义“吸附点”是什么
2.定义你的阈值
3.更新新游戏对象的位置
简单解释
1. 因为在一些示例中,如立方体,整个顶点可以成为吸附点,但很难定义无定形物体中的每个顶点都是吸附点。所以我想你需要一种方法来定义对象的哪些部分是“吸附点”。
@PierreBaret提出了一个简单的解决方案,即在您的变换组件上定义“吸附点”。 另一种方法是您提出的方法,创建空的游戏对象,它们将作为游戏对象上的吸附点位置。
2.在拥有这些吸附点之后,当您放置新的gameObject时,您需要定义一个阈值,只要您不希望每个对象总是吸附到最近的游戏对象。
3.因此,您定义了吸附点之间的最小距离,因此,如果您的吸附点低于该阈值,则需要更新其位置,以调整到吸附点。
视觉表现:
注意:阈值距离仅显示当前正方形的4个顶点中的一个阈值检查,但这个深蓝色圆应该复制3次,每个红色正方形的绿色吸附点都需要做一次
当然,这种方法似乎很昂贵,您可以进行一些改进,例如在游戏对象之间设置第一个阈值,如果gameObject在此阈值内,则检查吸附阈值距离。
希望有所帮助!
[A] 物理方法会考虑两个对象的所有表面,您可能需要使用表面之间的点积来检查对象是否重叠。这会增加一些计算成本,但并不会太糟糕。如果这里没有涉及到匹配,您将能够添加匹配特征(请参见[B])。然而,这是处理非预定义模型或可变形模型的唯一方法。
[B] 吸附点是一个好东西,但它本身还不足够。我认为您需要让一个对象具有:
其中一些是计算机视觉论文或书籍摘录,但它们阐述了实现我在答案中开发的算法和概念。