Похожие презентации:
Lesson30
1.
Урок 30. Robot Shooter 3D.Учебные цели занятия:
Разработчик 3D-игр на
UNITY и C#
Создать: своего робота, скрипт движения.
Изучить работу с анимациями через скрипт и
CharacterController.
2.
Привет! Рад снова видеть тебя на курсеРазработчик 3D-игр UNITY и C#!
Сегодня мы с Вами начнем создавать
новый проект — Шутер в 3D!
© КУБИК 2022-2023 www.kbkubik.ru
3.
Сегодня мы создадим примитивногоробота, создадим для него анимацию,
напишем скрипт для движения.
© КУБИК 2022-2023 www.kbkubik.ru
4.
Для начала, я хочу рассказать, какработать с анимациями.
© КУБИК 2022-2023 www.kbkubik.ru
5.
* В Unity, когда мы создаем анимации (например,движение, изменение размера, прыжок), мы делаем это в
окне Animation.
* Далее, мы настраиваем, как эти анимации переходят
друг в друга, используя Animator Controller.
* Но кто же решает, когда какая анимация должна
проиграться? Этим управляет наш C# скрипт!
* Скрипт "говорит" Аниматору, какое состояние должно
быть активным, а Аниматор уже сам включает нужную
анимацию.
© КУБИК 2022-2023 www.kbkubik.ru
6.
* Чтобы управлять анимацией объекта, на этом объектеобязательно должен быть компонент Animator.
* Animator Controller: Это файл-схема (похожа на блок-схему
или конечный автомат), который вы создаете и назначаете в
поле Controller компонента Animator.
* Он показывает:
* Все доступные анимации (называются States, например
«Walk»).
* Правила переходов между этими состояниями
(Transitions, например, "Если скорость > 0, перейди из Idle в
Run").
* Условия для этих переходов.
© КУБИК 2022-2023 www.kbkubik.ru
7.
* Внутри Animator Controller мы создаем параметры (Parameters).Эти переменные видны скрипту и могут быть им изменены.
* Основные типы параметров:
* Float: Для плавно меняющихся значений (например, скорость
движения от 0 до 10).
* Int: Для дискретных состояний (например, 0 = стоять, 1 =
сидеть, 2 = лежать).
* Bool: Для состояний "включено/выключено" (например,
IsGrounded - "на земле ли?", IsRunning - "бежит ли?").
* Trigger: Для мгновенных событий (например, Jump "прыжок", Attack - "атака"). Триггер срабатывает один раз и
автоматически сбрасывается.
© КУБИК 2022-2023 www.kbkubik.ru
8.
* Чтобы скрипт мог управлять Аниматором, ему нужно получитьссылку на этот компонент.
* Обычно это делается в методе Start() – он выполняется один раз
при запуске объекта.
* Мы используем функцию GetComponent<Animator>(), которая
ищет компонент Animator на том же игровом объекте, где находится
наш скрипт.
* Результат сохраняем в специальную переменную нашего
скрипта.
© КУБИК 2022-2023 www.kbkubik.ru
9.
* После того как мы получили ссылку на Animator (anim), мыможем изменять значения его параметров.
* Для каждого типа параметра есть своя команда:
* anim.SetBool("ИмяПараметра", true/false);
* anim.SetFloat("ИмяПараметра", значение); (например,
anim.SetFloat("Speed", 5.5f);)
* anim.SetInteger("ИмяПараметра", число); (например,
anim.SetInteger("State", 1);)
* anim.SetTrigger("ИмяПараметра"); (например,
anim.SetTrigger("Jump");)
* Важно: Имя параметра в коде должно точно совпадать с
именем, которое вы задали в Animator Controller (учитывая
регистр букв!).
© КУБИК 2022-2023 www.kbkubik.ru
10.
* В окне Animator мы видим стрелки между состояниями(анимациями) – это Transitions.
* Чтобы настроить, когда происходит переход, мы кликаем
на стрелку и смотрим в Inspector:
* Conditions (Условия): Здесь мы добавляем параметры,
которые должны выполниться. Например:
* IsRunning == true (для перехода к бегу)
* Speed > 0.1 (для перехода к бегу, если скорость выше
минимальной)
* doJump (для триггера прыжка)
* Has Exit Time:
* Если галочка стоит, анимация сначала доиграет до
конца, а потом произойдет переход.
* Если галочка снята, переход произойдет мгновенно,
как только условие выполнится (важно для прыжка, атаки).
* Transition Duration: Как долго длится сам переход
(плавное затухание одной анимации и появление другой). Для
мгновенных действий ставим 0.
© КУБИК 2022-2023 www.kbkubik.ru
11.
Условия
Настройк
и
12.
Практическое задание: «Растущий куб» (Работа с Bool)• Заголовок: Практика 1: Растущий куб
• Цель: Научиться включать/выключать анимацию
изменением Bool-параметра.
1. Что делаем в Unity:
* Создайте Cube.
* В окне Animation сделайте две анимации:
* Normal: Куб обычного размера (1,1,1).
* Big: Куб плавно увеличивается до размера (2,2,2).
* В Animator Controller создайте Bool параметр isLarge.
* Сделайте переходы:
* Normal -> Big (Condition: isLarge ==true).
* Big -> Normal (Condition: isLarge == false).
* У обоих переходов *снимите* галочку Has Exit Time.
2. *Что пишем в C# скрипте:*
* Напишите скрипт, который при *удержании* клавиши
Space (Пробел) ставит isLarge в true, а при *отпускании* — в
false.
© КУБИК 2022-2023 www.kbkubik.ru
13.
Создаем базовыйкуб
Открываем окно
анимации
14.
Создаем первую анимацию. Я назвал ее Small15.
Нажимаем AddProperty, раскрываем пункт Transform, нажимаем на+ у Scale
Добавились ключевые
точки
16.
Создаем новую анимациюLarge
17.
Нажимаем кнопкузаписи
Увеличиваем размер куба по всем осям на 2-2-2. Должны появится
ключевые точки
18.
Открываем окноаниматор
Создаем Bool параметр
IsLarge
19.
Нажимаем правой кнопкой по Small → MakeTransition и присоединяемстрелку к Large
Делаем обратную связь от Large к
Small
20.
У прямой связи добавляем ConditionIsLarge true
У обратной связи добавляем Condition
IsLarge false
21.
У обоих переходов убираем галочку HasExit Time
Создаем скрипт
anim
22.
Пишем простойкод
Получаем компонент
Animator
На пробел меняем значение
параметра IsLarge —
держим пробел True,
отпустили пробел - False
Добавляем скрипт на наш
кубик
23.
Запускаем и нажимаем пробел — куб долженувеличиться
Если ничего не происходит — проверьте анимации, у Large размеры куба 2-2-2, у
Small 1-1-1
24.
Перейдем к самой игре© КУБИК 2022-2023 www.kbkubik.ru
25.
Сейчас мы создадим робота сами.Он будет состоять из верхней и нижней
части.
Верхняя будет содержать туловище, руки и
голову, а нижняя — ноги и таз.
© КУБИК 2022-2023 www.kbkubik.ru
26.
Из примитивов создайте такогоробота.
Вот иерархия самого
робота.
Robot — пустой объект, в котором лежат все
части
Lower — нижняя часть, в которую входит Cylinder
— желтая часть(что-то вроде таза).
Внутри lower лежат два пустых объекта — l_u_leg
и r_u_leg — нужны для правильного вращения
ног(выполняют функции суставов). Они
расположены на уровне нижней грани цилиндра,
расстояние, как между ногами робота.
Внутри этих пустых объектов лежат l_leg и r_leg
— растянутые кубы, которые являются ногами
робота.
27.
Создаем анимацию walk дляRobot.
Первый кадр
анимации
Второй кадр
анимации
Третий кадр — полная копия
первого
28.
Добавляем на Robot компонент CharacterController
Создаем скрипт
RobotController
29.
* CharacterController – это специальный компонент вUnity, который помогает управлять движением
персонажа в 3D-мире.
* Он не является полноценным Rigidbody (телом,
на которое действуют законы физики, как у камня).
CharacterController не падает сам по себе под
действием гравитации.
* Преимущества:
* Простота управления: Вы напрямую задаете,
куда персонаж должен двигаться (вперед, назад,
влево, вправо).
* Удобная обработка столкновений: Он сам
обрабатывает столкновения с миром (стенами,
полом, потолком), но не падает под действием
гравитации, пока вы ему это не скажете.
* Идеален для игр от первого/третьего лица: Где
нужен точный контроль над движениями игрока, а не
реалистичное физическое взаимодействие.
© КУБИК 2022-2023 www.kbkubik.ru
30.
Записываем переменные в скриптRobotController
31.
В старте получаем characterController иanimator
В update добавляем переменные для ввода с мыши и
клавиатуры
32.
Пишем дальше вUpdate
Возвращает + или — если число отрицательное или
положительное
33.
Продолжаемписать
Clamp ограничивает значение между минимумом и
максимумом
Краткая запись условного оператора по схеме «Условие ? Действие если правда : Действие
если ложь»
Результат сразу записывается в переменную
34.
Последняячасть
35.
Сохраняем скрипт. Добавляем все объекты в инспектореу Robot
© КУБИК 2022-2023 www.kbkubik.ru
36.
Нужно добавить только lower и upper изиерархии
Можете запускать и проверять своего
робота!
37.
На этом пока все!На следующем уроке добавим роботу
запуск анимации только при ходьбе,
а так же начнем создавать
возможность стрельбы!
© КУБИК 2022-2023 www.kbkubik.ru
38.
Тем, кто все успел сделать на уроке.Сделаем переключение анимации
сейчас.
© КУБИК 2022-2023 www.kbkubik.ru
39.
Дописываем вUpdate
Роботу добавляем еще одну
анимацию idle
40.
Нажимаем AddProperty, выбираем Transform→ Scale
В Animator создаем связь между walk
и idle
Создаем bool параметр
IsMoving
41.
У прямой связи добавляем Condition : IsMoving- False
У обратной связи IsMoving
true
42.
Проверяем!На этом урок закончен.
© КУБИК 2022-2023 www.kbkubik.ru
43.
До встречи на следующей неделе!© КУБИК 2022-2023 www.kbkubik.ru