Крупное обновление пазлов
Несмотря на доработку пазлов и внедрение множества мелких корректировок, оставался ещё один крупный недостаток, который долго мучал меня и про который сообщали игроки-пользователи моих пазлов. Долго не решался взяться, так как понимал, что это не такой простой (как для меня, только начинающего) и трудоёмкий процесс. Наконец-то решился (дошли руки) и занялся устранением этого недостатка. А точнее — он состоит даже из нескольких составляющих.
Коротко про исправления
1. Изменена структура активной части самого элемента пазла.
— теперь рабочая область не весь квадрат изображения, а именно сам элемент пазла с выступами и вырезами.
— устранено пустое неактивное пространство.
2. Убрано автоматическое центрирование курсора (лапки) относительно самого элемента пазла. Очень раздражало его перескакивание.
— теперь, как мы его взяли (за какую его часть), так и перемещаем.
3. Исправлена механика перемещения пазлов.
— теперь активный перемещается поверх остальных;
— теперь после перемещения он остаётся поверх остальных.
4. Поправлен курсор мыши (лапка).
— теперь активная точка — не левый верхний угол, как у стандартной стрелки курсора, а центр лапки;
— теперь визуально более понятно берется каждый элемент пазла.
5. Внесено несколько мелких корректировок.
6. На каньонах в 2х пазлах исправлены два одинаковых элемента пазла.
Проблема 1 (активная часть)
При перемещении каждого взятого мышкой (лапкой котика) пазла каждый этот элемент перемешался по-разному (как бы на своём конкретном слое). То есть, не всегда сверху всех остальных, а под одним/двумя/всеми (как бы снизу них). Вот, например, как перемещался зеленый фон относительно мордочки кошечки, а затем и розовый (совсем под ними обоими).
Решил проблему относительно просто. Пришлось повозиться со слоями и внедрить в код проверку и запоминание текущего слоя всех элементов, а взятому активному элементу назначать высший уровень слоя над всеми. Ну а установленному на своё место, разумеется, наоборот — назначить минимальный слой снизу.
Но это ещё не всё…
Проблема 2 (перемещение)
Когда пытаемся взять лапкой котика элемент пазла, то его можно взять как бы не за само изображение, а где-то сбоку за угол, вроде как не относящийся к этому элементу. Это происходит потому, что само изображение не занимает полностью всё пространство «квадратной» картинки. Выступы и изгибы обманывают нас в этом. Постараюсь объяснить наглядно:
На первом рисунке красной линией показал физический размер элемента пазла с изображением этого пазла. Как видите, картинка заканчивается, например, в нижнем правом углу далеко от угла самого изображения. Если здесь под этим элементом будет лежать другой элемент и его вполне будет нормально видно, то за данный угол возьмётся именно этот элемент, а не тот, что под ним. Что не очень удобно и понятно — хочешь взять один, а берётся совсем другой элемент. Это начинает «бесить» при частой и долгой игре. Об этом мне сообщили пользователи моих пазлов.
Чтобы как-то, пусть не совсем, но максимально минимизировать такой недостаток, решил устранить и этот недочёт. На втором рисунке показал, как пришлось обводить изображение, ну а в скрипте использовать другой коллайдер для изображений, чтобы это учитывалось.
Таким образом, на третьем рисунке видим зелёное пространство, которое как бы убираем из взаимодействия и остаётся реально настоящий элемент пазла.
И вот тут пришлось сильно заморочиться, так как надо было обработать каждый (!) элемент — всех изображений всех пазлов в отдельности и это проделать для каждой игры. Я описывал в каждой игре, сколько всего таких элементов в них:
- Котята: 6х6=36 в каждом пазле, 36*18=648 во всех 18 пазлах
- Каньоны: 8х14=112 в каждом пазле, 112*16=1792 во всех 16 пазлах
- Париж: 10х18=180 в каждом пазле, 180*16=2880 во всех 16 пазлах
Итого: 5320 элементов. Только представьте!
Так что — понимаете мою «неуверенность» начать заниматься этим процессом. Тем не менее, достаточно долго возился, но таки закончил и с этим недостатком. Результат выглядит так:
Ну а практически уже испытайте в самих пазлах.
ПС
В планах внедрение ещё одной функции в пазлах. Но об этом в другой раз. А пока готовлю к выпуску новую игру на другую тематику. Ждите )
Всем — кота, ой — добра!
