2.78M

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.

Создаем первую анимацию. Я назвал ее Small

15.

Нажимаем AddProperty, раскрываем пункт Transform, нажимаем на
+ у Scale
Добавились ключевые
точки

16.

Создаем новую анимацию
Large

17.

Нажимаем кнопку
записи
Увеличиваем размер куба по всем осям на 2-2-2. Должны появится
ключевые точки

18.

Открываем окно
аниматор
Создаем Bool параметр
IsLarge

19.

Нажимаем правой кнопкой по Small → MakeTransition и присоединяем
стрелку к Large
Делаем обратную связь от Large к
Small

20.

У прямой связи добавляем Condition
IsLarge true
У обратной связи добавляем Condition
IsLarge false

21.

У обоих переходов убираем галочку Has
Exit 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 компонент Character
Controller
Создаем скрипт
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
English     Русский Правила