Всем снова привет. Я тут новую игрушку почти доделал, в этот раз на Unity. Немного о ней:
SnakEscape
Описание игры:
SnakEscape (или Snake Escape) - пошаговая логическая игра, в которой игроку предстоит стать едой, убегающей от преследующих его змеек, попутно собрав как можно больше звёзд.
С каждым новым уровнем игра будет становиться сложнее: появляться новые элементы игры и новые виды змеек. Помните - "Кто успел - тот и съел"!
Цель игры:
Игроку придётся проходить уровни, избегая того, чтобы быть съеденным змейками.
Для успешного побега с уровня игроку необходимо собрать как минимум одну звезду и добраться до выхода. Выходом является оранжевая клетка. Максимально игрок может собрать 3 звезды. Так же на каждом уровне ведётся учёт ходов и времени. Вся статистика записывается в таблицу рекордов по окончании уровня.
Особенности:
Минималистичное исполнение
Множество уровней от простых до очень сложных
Присутствует встроенный редактор уровней
Свободный обзор - удержи и перемещай.
Мультиплатформенность
Скриншоты:
Дата релиза:
А кто его знает... Нужно решить одну проблему (пост ниже), переделать игровое меню из GUI в UGUI из версии 4.6 и наклепать уровней. Возможно стоит добавить что-то движущееся в качестве фона, но пока не знаю как это будет смотреться.
Так теперь о небольшой проблеме:
При управлении свайпами восприятие направления куда переместиться игрок лучше, чем при управлении стрелками с клавиатуры.
К примеру я не могу понять, за какое направление должна отвечать клавиша UpArrow и RightArrow. Стрелка по центру показывает приблизительное направления для свайпов и траекторию движения. В общем: как лучше направлять игрока стрелками, когда камера может вращаться вокруг него?
dampirik написал:
А зачем в этой игре делать свободную камеру? Если камера не свободная, то её можно поворачивать на нужный градус, чтобы было понятно куда двигаться.
Я не так выразился про свободную камеру. Имелось ввиду, что игрок может ей управлять - вращать. На самом деле она орбитальная. Я хотел привязать кнопки к имитации свайпового перемещения просто вращая единичные вектора up left right down, так же как я поступал со свайпами, но ничего не вышло.
Сейчас я решил, что стоит смотреть в каком секторе в 90 градусов находится камера и из этого менять привязки на клавишах.
Наконец нашел наиболее приемлемый алгоритм для перемещения клавишами:
1) Сохраняется угол камеры относительно оси Y (0 - 2Pi)
2) В классе игрока просчитывается положение камеры, исходя из сохраненного угла, в секторах по 90 градусов (биссектрисы сектора - ось координат).
3) Происходит перемещение согласно взгляду и нажатой кнопки. Сбрасывается таймер обновления сохраненного угла.
4) Если таймер больше 0.5 сек., то сохр. угол обновляется. Это нужно для случая, когда модель игрока резко поворачивает камеру (азимутальный угол камеры после изменения положения игрока и перерасчета взгляда камеры меняет знак). При этом направление движения на кнопку сохраняется до остановки игрока
5) Так же сохраненный угол обновляется, если игрок сам повращал камеру.
Как по мне полученный алгоритм вышел довольно хорошим в плане управляемости игроком.
Средне, позволяет избежать написания велосипедов в плане графики и UI. Из минусов: для распознания гестур пришлось копировать код из моногейма и допиливать его в некоторых местах, а так же блокировка этих гестур, когда игрок тыкает по UI. Отсутвие документации прямо в коде, приходится для описания каждой непонятной функции лезть на сайт юнити. Проблема с нехваткой классов шифрования для RT устройств - их там всего 2 MD5 и SHA1, т.е. односторонние, а для Android и NT их очень много. Как я понял, чтобы сохранить файл на телефон или SD, а не в хранилище PlayerPrefs, то нужно использовать мосты между юнити и ОС под которую компилируется, т.е. создавть по 2 DLL: одна для платфомы назначения, другая для редактора/остальных платформ или несколько DLL для каждой платформы.
Пока не работал с Web, но придется. Скорее всего там тоже что-нибудь мне не понравится.
у фрукта лицо злое. должно быть радостное! типа хер ты меня догонишь.
У змеюки лицо отстраненное, вот змеюке нужно злое лицо. и шобы она пасть открыла типа щас сьест.
--
вцелом. ракурс неплохой
Кстати, хочу спросить совета у читателей данной серии статей. Что писать в следующем уроке? Реализацию движения камеры, так сказать, удлиннение уровня или взаимодействие героя с уровнем? Эти статьи будут точно написаны, но вот в каком порядке? Что Вам более необходимо? P.S. В статье про камеру постараюсь затронуть тему матриц, что будет полезно и в 3D