Сообщество - Unity

Unity

260 постов 2 717 подписчиков

Популярные теги в сообществе:

14

Управление временем на Unity.

Всем привет, сегодня я хотел бы поделиться тем, как я реализовал управление временем на Unity 3D. Думаю многие играли в Price of Percia: The sands of time. Мне показалось, что в этой игре не раскрыли весь потенциал, данной задумки. Что ж давайте подумаем, как можно это реализовать. В unity есть такая вещь, как Time. Вы можете его посмотреть настройки в Time Manager во вкладке Edit/ProjectSettings/Time

Как мы видим, здесь есть настройки Fixed Timestep - этот параметр определяет то, через какое время будет вызываться функция FixedUpdate. В этой функции выполняется обработка физики RigidBody и тому подобное. Maximum Allowed Time - Отвечает за независимый от частоты кадров отсчет времени, здесь он нам не понадобится. Time Scale - это скорость, с которой течет время, так установив этот параметр на 0 вы остановите движение времени в игре, а установив на значение больше или меньше 1 ускорите или замедлите время соответственно. Очень хорошо может применяться для создания SlowMotion или же для паузы в игре, заметим, что параметр Time Scale не может быть меньше 0, это значит, что мы не можем использовать его для наших целей, то есть можем, но не так просто.


Что же с теорией разобрались теперь давайте подумаем как нам реализовать обратную перемотку. На ум сразу же приходит идея записать позиции и поворот всех нужных нам объектов и присваивать их при нажатии на кнопку. Так и поступим.


Создадим C# скрипт и назовем его Time_.  Создадим массив GameObject и назовем его Objects, создадим также двумерный массив типа Vector3 и еще один двумерный массив типа Quaternion, назовем их Positions и Rotations соответственно.

Создадим сразу переменную Index типа integer, для того чтобы ориентироваться в массиве. Ведь когда мы будем записывать позиции и поворот, мы должны сохранить это в следующем элементе. Так же создадим переменную Scale типа int, которая будет регулировать размер массивов, а следовательно и длину записи, установим ей значение 1000.  


В Старте инициализируем переменные.

Objects мы будем искать все объекты на сцене по тегу "Time", давайте настроим этот тег.

Objects = GameObject.FindObjectsWithTag("Time"), далее инициализируем Positions и Rotations, устанавливая первый размер Objects.Length, а второй Scale.


Получим что-то вроде этого.

Давайте сразу пропишем в Update вычисления, если Index больше Scale, то обнуляем Index и записываем все по новой. Это будет значить, что мы возвращаем только последние несколько секунд времени, количество которых зависит от Scale. Тоже самое, только наоборот, делаем и с нулем,  таким образом ограничивая Index (0,Scale).

В начале мы не просто так затронули функцию FixedUpdate, она вызывается через определенное кол-во кадров, в зависимости от TimeScale, и в ней обрабатывается физика.

Нам нет смысла обновлять позиции каждый кадр, если они не меняются. Следовательно прописываем функцию FixedUpdate() и в ней уже пишем цикл for от 0 до Objects.Length, с переменной і и в этом цикле Positions и Rotations[i,Index] присваиваем текущие позиции и повороты. после цикла в функции прибавляем к Index 1.

Теперь осталось только присвоить эти значения к текущим позиции и повороту, для этого в Update прописываем условие If(Input.GetKey(KeyKode.R)) и в нем значение TimeScale устанавливаем на 0, так мы защищаем себя от воздействия физики на объекты и перестаем записывать позиции еще раз. Теперь используя функцию Lerp присваиваем позиции и поворот нашему трансформу.

Теперь осталось просто запускать время, когда отпустим клавишу R, для этого все  в том же Update пишем if(Input.GetKeyUp(KeyKode.R)) и в этом условии устанавливаем значение TimeScale на 1

Что ж, вот мы и написали небольшой код, для управления временем, он оказался довольно простым и наглядно показывает, как обновляется физика и как работает Lerp, так же практическое применение двумерных массивов в Unity. При настройке не забудьте добавить RigidBody на ваши кубики и установить тег.

Показать полностью 6

Walker - Island Adventure. Новая игра с возможным большим будущем

Всех приветствую !!! Это мой первый пост и мне бы хотелось, что бы вы меня поддержали !!!

Заранее спасибо ;)


Сегодня 07.07.2017 я бы хотел вам показать, первую версию игры над которой я уже работаю неделю. Вы можете спросить, что за неделю ты сделал только ВОТ ЭТО, я вам отвечу -  первые четыре дня я занимался дизайн документом игры, он довольно непростой. А оставшиеся 3 дня я осваивал Blender на создания Low poly графики, в которой кстати и будет выполнена игра.

Игра будет в жанре adventure со своими особенностями.


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


Повествование будет передано через записки и ОКРУЖЕНИЕ. Главным помощником в разгадке тайн будет именно окружение, на нем я делаю акцент.


На данный момент готово 5 моделей деревьев (предполагается еще 10 моделей деревьев), 3 модели камня (предполагается еще 15 моделей деревьев). На стадии первой версии вы можете погулять по небольшому лесу, залезть на камни и как следует осмотреться вокруг.

Игра создается на движке Unity. Примерная дата выхода Alpha версии - конец лета, примерно в 20 числах.


Игра будет выпущена в Steam и в конце лета вы возможно сможете в неё сыграть !!!


Я буду размещать новую информацию по разработке игры каждую неделю, на Pikabu я буду выкладывать скриншоты и немного информации о ней. Если же вы хотите  более подробную информацию о разработке то пожалуйста переходите на мой канал, там я буду вести дневник разработчика https://www.youtube.com/channel/UCTwz53Myk6EGdJPvQXOg1uQ


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


Всем удачи, ждите новой информации ;)

Показать полностью 2

Zona-Z

Продолжаем собирать отрицательные отзывы... )
Ребят, дело в том что все 2 поста собрали очень большое количество негатива.
По этому, вот вам ещё один повод поставить как можно больше минусов.
Но, прошу аргументировать свои комментариями, а лучше, дайте совет, как по вашему мнению улучшить игру.
Также, было много вопросов по поводу графики, мол уже 2017 а графика в вашей игре по просту не соответствует этому времени)  Да, это так, боюсь нам не под силу сделать графическую составляющую игру лучше. Но мы стремимся хоть как-то улучшить то что возможно.(2 скриншота представлены внизу, по ним тоже можно критику ).
Но ребят, все же с чего-то начинали? Ведь так!?

Показать полностью 2
0

Симулятор(кликер)

Решил изучать Unity сразу на реальном проекте и получилась вот такая игрушка на android. Хотелось бы услышать ваши замечания или советы.

Play Google: https://play.google.com/store/apps/details?id=com.ShadowSpac...

Показать полностью 3
Отличная работа, все прочитано!