creator cover learn-unity
learn-unity

learn-unity 

Наша жизнь игра, и мы её программисты

2subscribers

20posts

goals1
0 of 10 paid subscribers
Если наберем 10 подписчиков, значит мы нужны, значит мы важны...

About

Добро пожаловать, дорогой друг!
В эпоху информационного изобилия трудно найти действительно качественный и интересный источник знаний, особенно если это касается вопросов изучения UNITY, именно этот пробел и послужил идеей для создания нашего проекта.
Присаживайтесь по удобней, начинаем!

Текст на Canvas

О чем ты узнаешь из видео:
✅о компоненте TextMeshPro
✅узнаешь его основные параметры
✅поймешь что такое текстовой ассет
Все видосы ты сможешь найти на Ютьб, Рутьюб и Дзене.
О компоненте TextMeshPro:
Текст является основой частью интерфейса, ведь благодаря нему пользователь получает большую частью информации.
Текст в Unity, как и все остальные члены интерфейса, это компонент, который "весит" на объекте.
В Unity есть два основных компонента для создание текста на КАНВАСЕ: Text и TextMeshPro (UI).
Первый компонент мы рассматривать не будем, так как он устарел и поэтому сразу же перейдем к TextMeshPro.
Чтобы его сделать жмем по канвасу ПКМ и в опции UI выберем пункт Text-TextMeshPro. После этого в пустом проекте откроется окно импорта пакетов в проект, в котором надо установить все основные ресурсы для работы с этим компонентом.
Нужно кликнуть по одной активной кнопке и после загрузки на сцене появится сам текст.
Для понимая того, на что способен данный компонент и какие вещи с ним можно делать я рекомендую скачать примеры и дополнения к нему. Для этого нужно нажать на кнопку ниже. И после загрузки все примеры и дополнения будут находиться в папке TextMesh Pro -> Examples & Extras. А в папке Scenes лежат готовые примеры.
узнаешь его основные параметры:
Теперь давайте отключим Gizmos TextMeshPro, и рассмотрим его основные параметры:
О чем ты узнаешь из видео:
✅все о проблеме адаптивности
✅вот это Pivot
✅вот это Anchors, он же якорь
✅все об окне Anchors presets
Все о проблеме адаптивности
При верстке интерфейса абсолютно всегда присутствует проблема адаптивности. Чтобы ее увидеть давайте перейдем в пустой 2D проект и в нем сделаем Canvas.
Он сейчас невероятно огромный именно поэтому мы привяжем его к камере, как мы это делали на прошлом уроке. Также давайте изменим цвет камеры, сделаем на Canvasе картинку, а так же создадим Sprite. И для наглядности дадим спрайту другой цвет.
Теперь, предположим, что белый квадратик на Canvasе это готовый сверстанный интерфейс, а Sprite сверху - игровой мир. Как вы помните из прошлых уроков, в окне Game показывается что именно будет видеть пользователь на экране формата 480 на 800 пикселей. Так как пользователей у нас будет много, разнообразие экранов тоже будет присутствовать. Чтобы понимать как игра будет смотреться на экране побольше, добавим новое расширение в окне Game. Предположим, это будет перевернутый FullHD экран (размер 1080 на 1920 пикселей).
На этом этапе сразу же видна проблема: на двух разных экранах объекты интерфейса смотрятся по разному, а объекты мира меняться не будут. Это и есть проблема адаптивности UI: на разных экранах интерфейс будет смотреться по разному. Причина по которой это происходит довольно проста.
Ширина и высота в инспекторе у объектов Canvas'а, измеряется в пикселях. А 100 пикселей на маленьком и на большом экранах имеет разное соотношение.
Лайфхак: Для решение этой проблемы выбираем объект Canvas, и в окне инспектор находим компонент Canvas Scaler. По названию можно догадаться, что данный компонент отвечает за масштабирования. Базовый режим масштабирования - Constant Pixel Size (то есть ширина и высота объектов UI) будет измеряться в пикселях с постоянным размером. Вот корень зла, так сказать. Поэтому выбираем режим - Scale With Screen Size. Данный режим масштабирования, меняет масштаб пикселей в зависимости от исходного размера.
Введение в верстку
Level required:
На еду и коммуналку

Загрузка сцен

О чем ты узнаешь из видео:
✅ Как делать сцены
✅ Что такое build settings
✅ Зачем нужен SceneManager
Ремарка
Друзья перед тем, как мы перейдем к самому уроку, сделаем небольшую ремарку. Начинающие проггеры часто испытывают проблемы с терминологией Unity и программирования в целом. Для ее решения, мы сделали рубрику "словарь" в нашем telegram-канале. Каждый день в течении года (!!) на канал будут публиковаться термины связанные с game dev'ом. Самое главное: если термин будет состоять из других, более фундаментальных, то он выйдет позже и будет ссылаться на те термины, что уже были. Если говорить прямо и без намеков: мы приглашаем вас всех в наш телеграмм канал, ссылка в описании.
Как делать сцены
Благодаря прошлым урокам вы знаете что сцена - это составляющая часть проекта, на которой находятся и взаимодействуют между собой игровые объекты. А еще вы помните, что при создании пустого проекта, Unity автоматически создает сцену, на которой по умолчанию есть камера.
В проекте может быть сколько угодно сцен. Они могут представлять из себя уровень или его часть. Для того чтобы сделать новую сцену, нужно перейти в папку Scenes (для поддержания порядка в файловой архитектуре), затем нажать правую кнопку мыши, выбрать опцию `Create` и в ней выбрать пункт `S`cene. После этого даем название сцене и жмем `Enter`.
Также мы можем сделать копию уже существующей сцены. Копия нужна, так как на одной сцене может быть ряд объектов, которые должны быть и на другой сцене, и чтобы не делать повторное копирование объектов можно просто взять и продублировать уже существующую сцену. Для копирования сцены выбираем интересующую, жмем Ctr + D и даем ей название.
Для порядка в файловой системе, удалим пустую сцену, которую сделали в прошлый раз. Если вы тоже ее еще не удалили - то давайте сделаем это вместе! А еще давайте дадим название двум только что созданным сценам: `Level 1` и `Level 2` соответственно.

Триггеры и коллизии

О чем ты узнаешь из видео:
✅ какие фишки можно реализовать с помощью триггеров и коллизий
✅ общая концепция
✅ детальнее о коллизии
✅ подробнее о триггере
Ремарка
Друзья перед тем, как мы перейдем к самому уроку, сделаем небольшую ремарку. Начинающие прогеры часто испытывают проблемы с терминологией Unity и программирования в целом. Для ее решения, мы сделали рубрику "словарь" в нашем telegram-канале. Каждый день в течении года (!!) на канал будут публиковаться термины связанные с game dev'ом. Самое главное: если термин будет состоять из других, более фундаментальных, то он выйдет позже и будет ссылаться на те термины, что уже были. Если говорить прямо и без намеков: мы приглашаем вас всех в наш телеграм канал.
какие фишки можно реализовать с помощью триггеров и коллизий:
Все видели в играх такие фишки: игрок упал на платформу и потом, из-за этого она обрушается. Или же игрок входит в радиоактивную зону и, постепенно, теряет очки здоровья. Таких ситуаций и действий связанных с ними ну очень много. Вот именно эти фишки в движке Unity и можно сделать благодаря триггерам и коллизиям.
общая концепция
В Unity есть много "событий", то есть моментов времени в игре.
Первые события с которыми мы познакомимся, связаны с входом игрового объекта в некую область. В Unity эту область принято называть Trigger'ам. Сам Trigger представляет из себя игровой объект с коллайдером, у которого в опции IsTrigger стоит галочка, которая делает из границы - область.
С триггером может быть всего 3 события:
1. когда мы входим в триггер. Данное событие вызывается один раз, в момент самого входа.

Работа с физикой

О чем ты узнаешь из видео:
✅ как создать движение игрового объекта используя физику     
                написание скрипта
                оптимизация скрипта
✅ Как делать отключение поворота
На прошлом уроке, мы сделали так, что игрок может сталкиваться с препятствием, но при столкновении он ведет себя странно: он двигается то в одну сторону, то в другую. Более того, если мы увеличим скорость в окне Inspector, подергиваний будет еще больше. Почему так?
Скрипт написан так, что мы работаем с позицией игрового объекта на прямую: мы говорим на какой позиции должен быть объект в конкретный момент времени. Когда объект, на котором висит данный скрипт, не имеет физику, такое решение норм. Но как только объект начинает иметь компонент Rigidbody2D такое решение не уместно, так как за позицию игрового объекта теперь отвечает компонент физики, и теперь именно он говорит нашей позиции где ему находиться.
И колебания в игровом режиме являются следствием конфликта скрипта и компонента физики. Ведь скрипт говорит одну позицию, а физика говорит что объекта на этой позиции быть не может и дает ему другую позицию. И так каждый раз.
Чтобы решить данную проблему, надо реализовать движения объекта через физику.
Написание скрипта
Итак, откроем вчерашний скрипт изменения позиции игрового объекта используя оси. Удалим строку изменения позиции.
Для того чтобы работать с компонентом, Rigidbody2D следует его получить у объекта.
Думаю все помнят, что компонент transform мы не получаем, а обращаемся напрямую, так как он есть абсолютно у каждого объекта.

Знакомство с физикой

О чем ты узнаешь из видео:
✅ Что такое коллайдеры
✅ Какие есть опции у коллайдера
✅Все о компоненте Rigidbody
На прошлом уроке, вы узнали как реализовать движение объекта через оси. Сегодня вы поймете как сделать столкновение между объектами. Поймете что такое коллайдер, физический материал и узнаете о компоненте Rigidbody2D.
Ремарка
Тема физики является невероятно обширной и вмещает в себя столько уроков, что можно сделать отдельный курс. Поэтому мы затронем ее очень поверхностно, только для того, чтобы вы знали как решать максимальный стек задач.
Начнем ваш путь в изучении физики со столкновения одного объекта с другим.
Однако, если на текущей сцене мы банально добавим какое-нибудь препятствие игроку, сделав обычный Sprite, то запустив сцену мы увидим, что никакого столкновения не произойдет! Не верите - попробуйте сами.
Почему? Ну, нарисованный Sprite это просто картинка, и теперь на сцене их две.
Для столкновения потребуется сделать физическую форму этим объектам. А это делается при помощи коллайдеров. Давайте разбираться что это и как с этим работать.
Коллайдеры
Компоненты-коллайдеры определяют форму объекта для физических столкновений игровых объектов.
Лайфхак: сам коллайдер невидим и поэтому он может иметь совершено не такую форму, как sprite игрового объекта, на котором он расположен.
Самые простые коллайдеры а так же те, которые требуют мало ресурсов, это коллайдеры примитивов (BoxCollider2D, CircleCollider2D и CapsuleCollider2D).

Считывание осей

О чем ты узнаешь из видео:
✅Окно менеджера ввода
✅Потребность
✅Возвращение к старому коду
✅Вывод значения осей
✅Движение объекта вверх
На прошлом уроке, вы узнали, как реализовать движение объекта при нажатии на клавиши. Сегодня вы поймете как делать реализацию движения при помощи считывания осей.
В этом уроке будет много терминологии если вам нужна будет помощь в понимании термина - го в наш телеграмм канал, или вот ссылка на нашу книгу. Там все есть.
Окно менеджера ввода
Это окно позволяет определить нужные оси. Чтобы его открыть надо нажать в левой верхней части экрана кнопку `Edit` в нем выбрать опцию `ProjectSettings` и в открывшемся окне выбрать раздел `InputManager`. Там будет список всех осей: горизонтали, вертикали, выстрелов, ось движения подключенной мыши и тд.
Если речь идет про менеджер ввода в Unity, то под термином "ось" подразумевается или одна определенная клавиша или сразу их набор.
Когда удерживается соответствующий элемент управления, ось возвращает значение в диапазоне от -1 до 1 включительно. В настройках оси, можно увидеть клавиши, которые вернут исключительно положительные значения, а так же те есть те, которые вернут только отрицательные. Под сокращением alt buttons, подразумевается альтернативные (дополнительные) кнопки.
Потребность
Возможно сейчас у Вас появился резонный вопрос: а для чего в принципе нужно знать и использовать оси, если способ считывание клавиш, который мы разобрали на прошлом уроке, прекрасно работает.

Управление объектом

О чем ты узнаешь из видео:
✅ Теория Input
✅ Движение вверх при помощи кнопки
✅ Движение направо
✅ Передача ключа
Благодаря предыдущим урокам вы знаете что такое вектор и как написать постоянное изменение позиции игрового объекта. Сегодня научимся реализовывать движение объекта.
В этом видео будет много терминологии если вам нужна будет помощь в понимании термина - го в наш телеграмм канал, или вот ссылка на нашу книгу. Там все есть.
Теория Input
Управление объектом при помощи клавиш в Unity совершается с помощью класса Input. Всего есть 3 основных события (действия) которые связаны с кнопкой:
Нажатие
Удержание
Поднятие кнопки, то есть момент, когда мы перестаем ее удерживать.
Чтобы сделать действие, которое будет выполняться при срабатывании одного из этих событий надо написать условной оператор, в котором в качестве логического выражения, будет вызываться нужный метод из класса 'Input', возвращающий это логическое выражение (истину или ложь). Ниже, на примерах, будет яснопонятно.
Для обработки конкретной клавиши следует вызвать метод GetKey, скорее всего после этого ваш IDE, предложит на выбор три метода. По названию можно догадаться, за какое событие отвечает конкретный метод.
К примеру:

Метод Update

О чем ты узнаешь из видео:
✅Как делать написание метода
✅Введение в метод
✅Немного практики
✅Замена константы на переменную
Этот урок идет в тесной связке с предыдущим, поэтому если пропустили его - сначала восполните эти ценнейшие знания, и сюда!
Как делать написание метода
Для того чтобы сделать постоянное изменение позиции объекта надо реализовать метод, который будет вызываться много раз самим движком. Таких методов много в UNITY, начнем с Update ().
Пишем запись, как в методе START: private void Update ()
Все, метод UPDATE готов.
Введение в метод
Познакомимся с UPDATE поближе. В любой игре есть параметр FPS (Frames per second, Кадры в секунду), и вот рассматриваемый нами сегодня метод привязан к нему. Он, UPDATE, вызывается при обновлении нового кадра, из-за чего вытекает проблемка: он непостоянен (как   ̶ж̶е̶н̶щ̶и̶н̶а̶ и FPS), он каждую секунду может вызываться разное количество раз.
Предположим мы уже написали код в UPDATE который перемещает объект с постоянной скоростью вверх. Ну например на 5 единиц. Но 5 единиц в час? секунду? Непонятно. Из-за непостоянства метода UPDATE мы просто не можем задать точную скорость. И в 1 секунду у нас может быть 300 FPS, а значит при скорости в 5 единиц, она будет 1500 единиц; а потом может быть 1 FPS, иии объект сдвинется всего на 5 единиц.
Subscription levels2

На еду и коммуналку

$0.65 per month
Просто для тех, кто не безразличен к благодарности за контент. Мы делаем мы стараемся,Ю и, если это кому-то нужно, то welcome.

Для любителей по-глубже

$1.29 per month
Тут будет эксклюзив для тех, кто хочет углубится в изучение UNITY. А вдруг есть им такие тут?))
Go up