Кто знает, как в Cultist Simulator карты находят свободное место?

Пытаюсь понять, как карты определяют, куда им сдвинуться на столе, если на них бросаешь другую карту.

Хочу в своей игре сделать похожее перетаскивание объектов по столу по двум осям. Если игрок вдруг бросает один объект на другой, как в Cultist Simulator карты, то тот объект, который внизу, должен сдвинуться на ближайшее свободное место. При этом, кажется, сетка тут не используется, так как саму карту можно поставить в любую точку на столе.

По разному пытался реализовать это, но такого эффекта, как в Cultist Simulator не добился - чтобы без привязки к ячейке сетки объекты можно было ставить в любое место на столе. Уроков на Youtube по этой теме тоже не обнаружил.

В связи с этим и вопрос, кто-нибудь понимает, как карты в Cultist Simulator находят ближайшее свободное место, на которое им сдвинуться? Через что это может быть реализовано?

3131
19 комментариев

Если без сетки, то можно попробовать кидать рейкасты в 4 стороны для поверки наличия свободного места на карту плюс оффсет от других карт, и передвигать по минимальному расстоянию, ещё можна задать веса для приоритета в какую сторону двигать.
Возможно решение не верное это первое что пришло в голову)

13

Или возле каждой карты задаваить возможные позиции. И смотреть их доступность

3

Я как-то попробовал совсем дикий способ - формировать вокруг каждой поднятой "карты" своеобразную сетку из невидимых объектов с коллайдерами такого же размера, чтобы фиксировать, под которым из них есть свободное место, чтобы затем та карта, которой надо сдвинуться, формировала массив из свободных мест и летела к первому же из них. В принципе работает, но не идеально и через пень-колоду. То свободное место не находилось, то карта улетала в другой конец стола.

Возможно решение не верное это первое что пришло в голову)

Это решение всем пришло в голову. Судя по гифке, и разрабам тоже. Только там используется 8 сторон и карта просто сдвигается на минимально возможное расстояние. Всё просто. :)

Мне кажется хоть карты и не привязаны к сетке, скрытая сетка есть и ровняет уже по ней. Помечаешь ячейку занятой/свободной при действиях в её границах и сдвигаешь по сетке, как-то так

10

Ну какие, нафик, коллаэдры? Ну давайте ещё физику подключим! У каждой карты своя координата и размер. Карт на столе с гулькин нос! Любой алгоритм поиска пути простым перебором координат в цикле, какой больше нравится. Про Дейкстру и А* уж наверняка слышали!
Тут даже не поиск пути (ведь карта свободно пролетает над другими), а просто поиск ближайшей свободной зоны.

9

ребзя, кто советует коллайдеры - у вас конкретный юнити головного мозга (или анрил). Тут элементарно решается математически, немного геометрии там может

6