Хочу в своей игре сделать похожее перетаскивание объектов по столу по двум осям. Если игрок вдруг бросает один объект на другой, как в Cultist Simulator карты, то тот объект, который внизу, должен сдвинуться на ближайшее свободное место. При этом, кажется, сетка тут не используется, так как саму карту можно поставить в любую точку на столе.
Если без сетки, то можно попробовать кидать рейкасты в 4 стороны для поверки наличия свободного места на карту плюс оффсет от других карт, и передвигать по минимальному расстоянию, ещё можна задать веса для приоритета в какую сторону двигать.
Возможно решение не верное это первое что пришло в голову)
Или возле каждой карты задаваить возможные позиции. И смотреть их доступность
Я как-то попробовал совсем дикий способ - формировать вокруг каждой поднятой "карты" своеобразную сетку из невидимых объектов с коллайдерами такого же размера, чтобы фиксировать, под которым из них есть свободное место, чтобы затем та карта, которой надо сдвинуться, формировала массив из свободных мест и летела к первому же из них. В принципе работает, но не идеально и через пень-колоду. То свободное место не находилось, то карта улетала в другой конец стола.
Возможно решение не верное это первое что пришло в голову)
Это решение всем пришло в голову. Судя по гифке, и разрабам тоже. Только там используется 8 сторон и карта просто сдвигается на минимально возможное расстояние. Всё просто. :)
Мне кажется хоть карты и не привязаны к сетке, скрытая сетка есть и ровняет уже по ней. Помечаешь ячейку занятой/свободной при действиях в её границах и сдвигаешь по сетке, как-то так
Ну какие, нафик, коллаэдры? Ну давайте ещё физику подключим! У каждой карты своя координата и размер. Карт на столе с гулькин нос! Любой алгоритм поиска пути простым перебором координат в цикле, какой больше нравится. Про Дейкстру и А* уж наверняка слышали!
Тут даже не поиск пути (ведь карта свободно пролетает над другими), а просто поиск ближайшей свободной зоны.
ребзя, кто советует коллайдеры - у вас конкретный юнити головного мозга (или анрил). Тут элементарно решается математически, немного геометрии там может