Щоденник мети

Добавил в игру таймер, он будет дополнительным бонусом к очкам на финише. Чем меньше времени понадобилось на игру, тем больше очков получает игрок. Хотел сделать красивую анимацию подсчета, но с первого раза не получилось, оставил на потом.
Так же добавил нормальный экран финиша, где показывается вся информация об игре.

Спустя много загруженных дней вернулся к изучению движка. На этот раз изучил как можно сохранять данные между сценами.
Вариантов много, пока что выбрал самый простой, ведь хранить мне нужно всего 2 переменные. Но для себя отметил что загрузка данных может быть очень гибкая и мощная, очень похоже на сериализацию данных (это она и есть), просто под другим углом.
Решил сохранять очки и уровень здоровья. Теперь можно даже углядеть соревновательный элемент в игре =)

Наконец могу сказать что собрал худо бедно законченный рабочий билд.
Есть 3 уровня, есть условия перехода, есть UI и интерактивные объекты.
Приятно видеть как ххоть и примитивная, но игра обрастает мясом.
В эти дни потратил время на доработку и исправление ошибок, хоть и очень хочется уже перейти к визуалу.
На видео показал как сейчас выглядет "игра" =)
Следующим шагом постараюсь реализовать "миссии" и систему подсчета очков.

В последние дни занимаюсь доработками и исправлением текущих скриптов.
Удивительно, как в такой микро игре уже появляется технический долг =)
Исправил систему прижков. Ранее, чтобы узнать, нахожится ли игрок на земле использовал уже существущую проверку Unity, но она работала крайне плохо, если игрок просто стоял на месте, проверка говорила что оне не на земле и прыгать было невозможно.
Переписал эту проверку с помощью лучей. Просто пускаю луч в сторону земли. Если луч пересекает землю, то игрок на земле. Все просто! Работает как часы!
Так же доработал систему стамины. Теперь если израсходовать всю стамину, нужно подождать 2 секунды, чтобы хоть что-то восстановилось. Это позволяет избежать дерганого движения, если пользователь зажал Shift и стамина восстановиласть на 0.2, то пользователь пробежит долю секунды и потом опять замедлится. Теперь он подождет, прежде чем снова побежит.
На коротком видео результат улучшений.
P.S. мне стоит расчесывать голову по утру =)

По мере изучения движка становится видно, как много еще предстоит изучить. Сейчас касаюсь только самых вершков.
Добавил в цель промежуточные звенью, которые считаю нужно обязательно знать.
Список уже большой, уверен что он еще будет расширяться )

Создал систему подбора предметов с пользовательским интерфейсом!
Сначала было сложно, но в итоге решение оказалось очень простым. Уверен, что стоит записать обучающую программу для новичков, думаю, она будет им полезна.

Наконец-то переделал управление игроком.
Теперь управление стало намного удобнее и приятнее. Переделал физику столкновений, теперь игрок не отлетает от объектов.
Еще одно важное обновление! Добавлены спринт и выносливость. Также отображается текущее количество выносливости в пользовательском интерфейсе в виде ползунка.



Закончил третий уровень.
Добавил спавн зомби и интерактивные объекты. Когда буду делать отдельные миссии для каждого уровня, взаимодействие с объектами будет обязательным для открытия портала.
Спавн зомби начинается сразу, как только игрок наступает на определенную область. Я долго не мог понять, почему игрок спотыкается о платформу. Я понял, что мне нужно использовать метод OnTriggerEnter вместо OnCollisionEnter ._. На видео видно как я туплю и не понимаю почему игрок бъется об невидимую стену.


Сделал второй уровень. Решил записать сам процесс обучения. На втором уровне нужно прыгать, чтобы собирать бонусы. Очевидно, что управление персонажем ужасное. Буду улучшать его после сборки 3-го уровня.
При создании второго уровня столкнулся с проблемой, что в коде много жестко закодированного текста. Мне как программисту это очень не нравится. Это чревато огромными проблемами в будущем. Буду искать способы этого избежать.


Сделал переход между уровнями по достижению 10 очков. Просто появляется портал, в который нужно войти. Второй уровень почти пустой. Начинаю его детализировать.
Мне нравится, как происходит взаимодействие между объектами в движке. Но мой опыт программирования подсказывает мне, что нужно максимально инкапсулировать логику в более мелкие скрипты.
