我正在开发一个简单的游戏,用户可以在其中放置不同但模块化的对象(例如:轨道、道路等)。
我的问题是:当一个物体靠近另一个物体时,如何匹配和放置不同的物体?
我的第一个方法是为每个模块对象创建一个隐藏的子对象(一个盒子),并将它放在可以放置其他对象的边框中(参见我的图像示例),这样我就可以使用该坐标(x ,y,z) 对齐其他对象。
但我不知道这是否是最好的方法。
谢谢
最佳答案
总结:
1.定义什么是“捕捉点”
2.定义你的阈值
3.更新新的游戏对象位置
小解释
1. 所以我想你需要一种方法来定义对象的哪些部分是“捕捉点”。 因为它们在某些示例中可以很清楚,例如立方体,其中整个顶点可以是捕捉点,但很难定义无定形对象中的每个顶点。
一个简单的解决方案可能是@PierreBaret 公开的解决方案,其中包括在您的转换组件上定义“捕捉点”。 另一种是您提议的,创建空的游戏对象,这些对象将充当游戏对象上的捕捉点位置。
2.有了这些捕捉点后,当你放下你的新游戏对象时,你需要定义一个阈值,只要你不希望每个对象都捕捉到最近的游戏对象。
3.因此您定义了捕捉点之间的最小距离,因此如果您的捕捉点低于该阈值,您将需要更新它的位置,以调整到捕捉点。
视觉呈现:
注意: 阈值距离仅显示正方形中第 4 个顶点上的 4 个当前阈值检查中的一个,但这个深蓝色圆圈应该再重复 3 次,一次用于红色方 block 的每个绿色捕捉点
当然这个方法看起来很昂贵,你可以做一些改进,比如在游戏对象之间设置一个第一个阈值,如果游戏对象在这个阈值内,然后检查捕捉阈值距离。
希望对您有所帮助!
关于algorithm - 如何在 Unity 中对齐 "tracks"或模块化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50122220/