Вся ниже представленная информация есть в Телеграмм и доступна всем по ссылке t.me/ded63russtudio
В ближайшее время данный канал в Дзене поддерживаться не будет!
Настоятельно рекомендуем воспользоваться указанной ссылкой...
Ранее были рассмотрены:
Часть 1 "Запуск и Канвас", https://dzen.ru/a/ZU51Wf4lWB2MYXlG?referrer_clid=1400&
Часть 2 "Игровые элементы", https://dzen.ru/a/ZVIckxHuJl5sFftG?referrer_clid=1400&
Итак, начнем с Игрока.
И первое, что необходимо сделать - создать тач-зону.
Для этого в Иерархии ПКМ/3D Object/Cube. Да! Именно 3D объект Куб
Появиться этот капризный объект может где попало...
Поработаем с ним.
Первое, что следует сделать, перевести сцену в режим 3D
Будет как-то так
и повернуть игровое поле по оси Y торцем к себе
Что видим? Видим, что новоявленный Куб стоит не совсем так, как надо - его следует переместить по оси Z влево до стрелки оси Y и после этого вернуться назад в режим 2D.
В этом режиме визуально ничего не изменилось, да и не надо! Главное есть уверенность, что куб по оси Z находится в нужной позиции.
Затем переносим куб на Игрока вместе с корзиной, меняем размер как-то так
В Инспекторе удаляем все компоненты куба, кроме Transform и BoxCollider
В Иерархии Cube переименовываем в TachZone. Готово!
Посредством этого элемента мы сможем управлять персонажем. Для этого нужен скрипт.
Идем в папку Project / Scripts жмем ПКМ / Greate / C#Script
даем имя скрипту MovingPlayer.
Я принципиально не даю возможность просто тупо скопировать скрипт!!!
Чтобы чему-то научиться, надо сначала делать все исключительно руками! И никак иначе!
Дважды жмем ЛКМ на скрипте и у Вас рыба скрипта откроется в том редакторе, что у Вас поддерживает Юнити. У меня VS работает туго, MD мне не очень нравится... я использую NotePad++... Это, отмечу, не совсем удобно, зато практически не тормозит. Если у Вас есть вопросы, как подключить нужную Вам программу для написания скриптов, обращайтесь - помогу!
В рыбе скрипта надо удалить все, что находится внутри скобок после
public class MovingPlayer : MonoBehaviour
скобки лучше оставить в целости! И пишем скрипт вот так
Сохраняем. Идем назад в Юнити. Если что-то не так - Юнити выдаст ошибку, а может и не одну. Если ошибки есть - внимательно изучаем скрипт и исправляем.
Надо понимать, что Юнити очень капризен к регистру и служебным символам!!!
Если все ровно, вешаем скрипт на объект TauchZone путем простого перетаскивания скрипта либо на объект в Иерархии, либо, активировав TachZone, в его Инспектор. Должно быть так
Теперь скрипт надо настроить.
Первым делом в строку скрипта Player из Иерархии тащим элемент korzinka - он у нас главный...
Далее, у нас есть границы перемещения объекта влево и вправо. Для этого идем в сцену, хватаем мышкой Корзину и волокем ее влево до конца игрового поля
В Инспекторе в строке Position видим значение по оси Х -2,32
Особые тонкости в сотых долях просто не нужны, поэтому можно принять за истину значение -2,3, которое и следует внести в поле скрипта Left, в поле скрипта Right соответственно надо занести значение 2,3
Да и не забудьте вернуть игрока на середину!
Остается задать скорость перемещения игрока. Поставим для начала 10 и потом отрегулируем.
Давим Play, вместо пальца мышь и пробуем двигать игрока...
Работает!
Скорость в моем понимании в норме, а вот границы следует немного убавить до 2,2.
Как видите, данный скрипт не дает возможности менять направление взгляда игрока в зависимости от стороны, куда движется. Пока оставим как есть. Доработаем напильником позже....
Пока есть другие задачи!
Самая главная, пожалуй, задача - рандомное появление падающих предметов.
Сделаем так: на левом лотке предметы будут появляться с одной частотой, на правом - с другой.
Приступим...
В папке Scripts создаем рыбу скрипта Spawner и открываем его
Удаляем все в скобках и пишем вот такой скрипт
В Иерархии создаем пустой объект с именем SpawnLeft и тащим его на левый лоток как-то сюда
Копируем его и даем имя SpawnRight и уже новый объект переносим сюда
Тем самым мы ограничили местоположение появления элементов.
На SpawnLeft вешаем созданный скрипт Spawner и будем его настраивать
Естественно, в поле RightPosition тащим из Иерархии SpawnRight
Скорость появления SpawnDelay пока поставим 1,2
А вот со строкой ObjectSpawn делаем так: жмем на расширение
и видим, что пока тут пусто. Нажимаем + и появился новый элемент. У нас их три (яйцо, снежок и шарик) - соответственно жмем еще пару раз и получаем три элемента спавна
Теперь тз папки Prefabs поочередно переносим каждый элемент в сроку.
Остается звук.
Бежим и качаем звук, который нравится, дабы он сигнализировал о появлении нового объекта и переносим его в папку Audio в Assets с именем newObject. Потом его уже перетаскиваем в скрипт
Вот теперь, пока даже, не наводя порядок в Иерархии, можно испытать работу спавна.
Жмем Play и смотрим... Заодно можно потренироваться пока в убегании от падающих предметов.
Вот, что выявила тренировка!
Сам герой при столкновении с предметами теряет пространственную ориентацию - это работает физика в Юнити. Поэтому следует поменять в Иерархии - кто у кого родитель.
Сейчас родитель - корзинка, а все остальные элементы - дети. Сделаем родителем Игрока, его дочерним объектом корзинку, а ее дочерним объектом ловилку и снова проверим в игре... И не забудьте в элементе TachZone сменить строку Player!!!
Маловато будет, однако!
Игрока просто втаптывают в землю и вот почему...
У земли нет коллайдера. Надо исправить!
В папке BackGround создаем пустой объект с именем Ground, растягиваем его по поверхности травы и добавляем ему BoxCollider2D, кстати это потом все равно надо будет!
И последнее, о чем я совсем забыл в физическом процессе Юнити - у элемента Player в Инспекторе в компоненте Rigidbody2D в строке Constants следует поставить галочки про осям Y и Z, тем самым исключив движение объекта по этим направлениям!
Вот теперь все ровно!
Можно в скрипте добавить количество элементов и разнообразить тем самым рандомность их появления.
Для правого лотка следует продублировать SpawnLeft и SpawnRight и оставив их имена как есть, сменить им позиции уже на правый лоток и лучше делать это поочередно, а не хором!
После этого в скрипте на SpawnLeft сменить RightPosition на SpawnRight(1), SpawnDelay поставить, например, 1.6 и...
можно запустить игру и проверить как все работает.
Все сыплется как из рога изобилия - успевай ловить нужное и уворачиваться от ненужного!!!
Это будет наш следующий шаг.
Однако прежде чем ринуться туда, надо привести в порядок Иерархию. У нас в папке Lotoks есть левый лоток и есть правый. У каждого свои точки спавна со своими настройками. Надо собрать это дело в кучу. Все, что касается левого лотка переносим в LotokLeft и соответственно все остальное в LotokRight
Теперь все ровно!
На этом Часть 3 окончена.
Далее Часть 4 "Статистика игры"