Подскажите алгоритм для пазла!

Общие вопросы о Unity3D

Подскажите алгоритм для пазла!

Сообщение eonyanov 12 ноя 2015, 12:48

Всем привет!
Представьте, у вас есть картина, которая разорвана на несколько разных частей.
Границы неровные, все части разных размеров.
Игроку нужно собрать из кусочков цельную картину.
Причем, когда игрок правильно подносит одну часть к другой, рядом с той неподвижной частью возникает темный силуэт передвигаемой части.
А когда игрок отпускает мышку, части они "склеиваются" и потом уже передвигаются вместе.

Подскажите алгоритм, как такое можно реализовать?
Хотя бы куда копать?
Не обязательно на Юнити, может кто на флеше делал или еще как.
Важен сам алгоритм, ну и предварительная настройка картинок.
Glow Asteroids Game
Happy Chair
Аватара пользователя
eonyanov
UNITрон
 
Сообщения: 298
Зарегистрирован: 22 авг 2014, 10:28

Re: Подскажите алгоритм для пазла!

Сообщение waruiyume 12 ноя 2015, 13:00

На сторе есть пазл стартер киты.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Подскажите алгоритм для пазла!

Сообщение eonyanov 12 ноя 2015, 13:18

На сторе из бесплатных я пробовал Puzzle Maker 3 Lite.
Но там этот функционал кривоват и нет подсветки, о которой я писал. Плюс ко всему, весь функционал залит в dll.
Так что даже не подправить ничего.
Glow Asteroids Game
Happy Chair
Аватара пользователя
eonyanov
UNITрон
 
Сообщения: 298
Зарегистрирован: 22 авг 2014, 10:28

Re: Подскажите алгоритм для пазла!

Сообщение jet_aleks 13 ноя 2015, 10:54

в чем собственно сложность??
на каждый пазл вешаешь скрипт драга, создаешь менеджер который обрабатывает все склеивания,
рассчитываешь дистанцию между пазлами, каждому пазлу свой id, пару масивов в менеджер. и все ровные руки.


или у вас в чемто ином сложности?
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Подскажите алгоритм для пазла!

Сообщение ilka 13 ноя 2015, 11:54

рассчитываешь дистанцию между пазлами

Зачем это? можно просто создать сетку к каждой ячейке сетки свой пазл.
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Подскажите алгоритм для пазла!

Сообщение Cr0c 13 ноя 2015, 12:33

ilka писал(а):
рассчитываешь дистанцию между пазлами

Зачем это? можно просто создать сетку к каждой ячейке сетки свой пазл.

А если куски не квадратные? Лучше тогда перекрестные ссылки на соседей с вектором расстояния между ними. Если (вектор_расстояния - вектор_расстояния_текущий).SqrMagnitude <= 0.01 то приклеиваем куски друг к другу. Но это подразумевает процедурную нарезку изображения/меша.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Подскажите алгоритм для пазла!

Сообщение jet_aleks 13 ноя 2015, 17:45

темболее , человек хочет двигать уже несколько заранее с клееных кусков
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Подскажите алгоритм для пазла!

Сообщение ilka 13 ноя 2015, 19:34

темболее , человек хочет двигать уже несколько заранее с клееных кусков

Опять повторяю вопрос: в чем проблема использовать сетку? Перетаскиваете склеенные пазлы, с расчетом общей(склеенной) площади фигуры и области куда перетаскиваете.
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Подскажите алгоритм для пазла!

Сообщение Wite 14 ноя 2015, 10:50

Я в пазле мерил растояние и угол рядом стояших элементов и заносил их в массив. Тоесть у каждого обьекта массив элементов которые к ниму должны присоеденятся. Когда хватаем объект начинается проверка на растояние и угол до этих обьектов в массиве. Когда происходит присоединение пихаем обьект в дочки к ведущему и убераем из массива.
Сетка тут не пойдет потому ка куски пазла не ровные. Треугольные вкадратные круглые.
Wite
UNец
 
Сообщения: 49
Зарегистрирован: 15 фев 2010, 08:10

Re: Подскажите алгоритм для пазла!

Сообщение Cr0c 14 ноя 2015, 11:25

Wite писал(а):Я в пазле мерил растояние и угол рядом стояших элементов и заносил их в массив.

Это производные от вектора ))) чтобы лишнее не считать их и использовать. Чем ближе куски к оригиналу, тем меньше разница векторов текущего положения и оригинального (между кусками векторы которые).
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Подскажите алгоритм для пазла!

Сообщение ilka 14 ноя 2015, 12:52

Сетка тут не пойдет потому ка куски пазла не ровные. Треугольные вкадратные круглые.

круглые

:-?
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Подскажите алгоритм для пазла!

Сообщение Cr0c 14 ноя 2015, 13:10

ilka писал(а):
Сетка тут не пойдет потому ка куски пазла не ровные. Треугольные вкадратные круглые.

круглые

:-?

Вырезал один кусок круглый - и что? :) не все же куски круглые.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Подскажите алгоритм для пазла!

Сообщение Wite 14 ноя 2015, 15:46

У меня было както так

.jpg
У вас нет доступа для просмотра вложений в этом сообщении.
Wite
UNец
 
Сообщения: 49
Зарегистрирован: 15 фев 2010, 08:10

Re: Подскажите алгоритм для пазла!

Сообщение eonyanov 23 ноя 2015, 09:05

Cr0c писал(а):
ilka писал(а):
рассчитываешь дистанцию между пазлами

Зачем это? можно просто создать сетку к каждой ячейке сетки свой пазл.

А если куски не квадратные? Лучше тогда перекрестные ссылки на соседей с вектором расстояния между ними. Если (вектор_расстояния - вектор_расстояния_текущий).SqrMagnitude <= 0.01 то приклеиваем куски друг к другу. Но это подразумевает процедурную нарезку изображения/меша.


Так и сделал.
При инициализации менеджер находит все куски пазла, каждому присваивает id (будем считать "номер группы").
Потом в каждый кусок передает найденный массив кусков.
Каждый кусок для себя создает массив расстояний доя других кусков.
Далее при перетаскивании идет проверка на близость (все действия дублируются для всех кусков с таким же id, как у текущего. Далее объясню.).
Если близко, склеиваем и меняем у текущего куска id на кусок, к которому приклеились. Теперь они у нас в группе с одним id.
Общий список кусков с их id хранится в менеджере.

Когда у всех кусков будет один id, пазл собран.

Процедурную нарезку не использую. Всё делается на uGUI. Необходимо изначально собрать картинку из кусков на сцене, далее при запуски идет инициализация и рандомный разброс кусков о определенной области.
Glow Asteroids Game
Happy Chair
Аватара пользователя
eonyanov
UNITрон
 
Сообщения: 298
Зарегистрирован: 22 авг 2014, 10:28


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5