如何在Unity中对齐"轨道"或模块化对象?

sti*_*ghy 8 algorithm unity-game-engine

我正在开发一个简单的游戏,用户可以放置不同但模块化的对象(例如:轨道,道路等).

我的问题是:当一个靠近另一个放置时,如何匹配和放置不同的对象?

我的第一种方法是为每个模块对象创建一个隐藏的子对象(一个框),并将其放在可以放置其他对象的边框中(参见我的图像示例),这样我就可以使用该坐标(x,y, z)对齐其他对象.

但我不知道最好的方法.

在此输入图像描述

在此输入图像描述

谢谢

Lot*_*tan 3

概括:

1.定义什么是“捕捉点”

2.定义您的阈值

3.更新新的游戏对象位置

很少解释

1.所以我想你需要一种方法来定义对象的哪些部分是“捕捉点”。因为它们在某些示例中可能很清晰,例如立方体,其中整个顶点可能是捕捉点,但很难定义无定形对象中的每个顶点。

@PierreBaret 公开的解决方案可能是一个简单的解决方案,其中包括在变换组件上定义“捕捉点”。另一种是您建议的,创建空的游戏对象,充当游戏对象上的捕捉点位置。

2.获得这些捕捉点后,当您放置新的游戏对象时,您需要定义一个阈值,只要您不希望每个对象始终捕捉到最近的游戏对象即可。

3.因此,您定义了捕捉点之间的最小距离,因此如果您的捕捉点低于该阈值,您将需要更新其位置,以调整到捕捉点。

视觉表现:

在此输入图像描述

注意: 阈值距离仅显示正方形中 4 个顶点上的 4 个当前阈值检查之一,但该深蓝色圆圈应再重复 3 次,红色正方形的每个绿色捕捉点各一次

当然这种方法看起来很昂贵,您可以进行一些改进,例如在游戏对象之间设置第一个阈值,如果游戏对象在该阈值内,则检查捕捉阈值距离。

希望能帮助到你!