Резюме:
1. Определите, что такое «точка привязки»
2. Определите, какой у вас порог
3. Обновление положения нового игрового объекта
Маленькое объяснение
1.
Поэтому я предполагаю, что вам нужен способ определить, какие части объекта являются «точками привязки».
Потому что они могут быть понятны в некоторых примерах, например, в Кубе, где целая вершина могла быть точками привязки, но трудно определить, что каждая вершина в аморфных объектах.
Простое решение может быть предложено @PierreBaret, которое заключается в определении вашего компонента преобразования, который является «точками привязки».
Другой - тот, который вы поддерживаете, создавая пустые игровые объекты, которые будут действовать как точки привязки точек на игровом объекте.
2. После получения этих привязанных точек, когда вы будете отбрасывать новый игровой объект, вам необходимо определить порог, если вы не хотите, чтобы каждый объект всегда привязывался к ближайшему игровому объекту.
3.Так вы определяете минимальное расстояние между точками привязки, поэтому, если ваша точка привязки находится ниже этого порога, вам нужно будет обновить ее положение, чтобы приспособиться к привязанной точке.
Визуальное представление:
Примечание: Порог расстояния показывает только ОДНУ из 4 текущих проверок пороговых значений для 4 вершин в квадрате, но этот синий круг следует повторить еще 3 раза, по одному для каждого зеленая точка привязки красного квадрата
Конечно, этот метод кажется дорогим, вы можете внести некоторые улучшения, такие как установка первого порога между игровыми объектами, и если gameObject находится внутри этого порога, то проверить пороговое расстояние привязки.
Надеюсь, это поможет!