47.58M

Презентация_9_–_Персонаж_и_оружие

1.

Разработка игр
на Unity
Урок 9
Персонаж и оружие

2.

Персонаж и оружие | Урок 9
План курса. Модуль 2 – Жанр «3D-аркада»
8
Подготовка игры
12
Персонаж и урон
9
Персонаж и оружие
13
Доработка игры
10
Двери между уровнями
11
Искусственный интеллект

3.

Ставь + в чат,
если хорошо видно и слышно

4.

Персонаж и оружие | Урок 9
Какая Розовая Пантера ты сегодня? =)
1
4
2
5
3
6

5.

Викторина!
Давайте вспомним предыдущий урок =)
Переходим на сайт с викториной по ссылке,
которую отправит преподаватель

6.

Персонаж и оружие | Урок 9
Сегодня на уроке

Узнаем, как правильно двигать объекты

Создадим объект при помощи скрипта

Создадим управляемого персонажа

Реализуем механику стрельбы

7.

Движение объектов

8.

Персонаж и оружие | Урок 9
Методы передвижения
Сейчас мы знаем 2 метода передвижения:
Translate и AddForce. Они работают как в 2D,
так и в 3D.
Посмотрим, как двигаются два объекта с
компонентом Rigidbody при помощи обоих способов.
Оранжевый – Translate
Зеленый – AddForce
Мы постепенно увеличиваем скорость для оранжевого

9.

Персонаж и оружие | Урок 9
Что же произошло? Почему оранжевый пролетел
сквозь стену, а зеленый нет?
Translate двигает компонент Transform объекта, и
уже потом за ним двигается все остальное, в том
числе и Rigidbody
AddForce двигает компонент Rigidbody, и уже потом
все остальные компоненты

10.

Персонаж и оружие | Урок 9
Компоненту Rigidbody не все равно на физические законы, и он
крайне против того, чтобы один физический объект мог
застревать в другом или проходить сквозь него.
Но когда мы двигаем компонент Transform (которому все равно
на физику), то сначала физический объект двигается, а затем
Rigidbody просчитывает, что он не может находиться в стене, и
толкает объект обратно. Поэтому и создается эта тряска.

11.

Какой же вывод можно сделать из этого?
Какие объекты и чем лучше двигать?

12.

Персонаж и оружие | Урок 9
Еще немного про физику
Физика в Unity обрабатывается не каждый кадр. То
есть если у вас, допустим, 60 FPS, то физика может
просчитываться только в 40-50 кадрах.
Справа сравнивается обычный FPS, и в какие из этих
кадров обрабатывается физика
Сколько раз обрабатывается физика при 20 FPS

13.

Персонаж и оружие | Урок 9
Событийный метод Update срабатывает каждый кадр. Но что будет,
если мы пропишем там движение физики? Физика все равно не
будет обрабатываться каждый кадр.
Все, что мы делаем с физическими объектами, надо писать в
событийном методе FixedUpdate. Этот метод срабатывает строго в
те кадры, когда обрабатывается физика.

14.

А что будет, если Translate написать внутри FixedUpdate?
Перестанет ли он трястись и проходить сквозь стену?

15.

Персонаж и оружие | Урок 9
Создаем объект через скрипт
Для создания объекта внутри Unity существует
метод Instantiate. Как аргумент он может получить
несколько параметров, которые определяют:
1) Что мы создаем
2) Где мы это создаем
3) Как оно будет повернуто
4) Внутри какого объекта оно будет
Вопрос: а где может пригодиться данный метод?

16.

Персонаж и оружие | Урок 9
Аргумент – это данные, которые мы подаем методу
и с которыми он может что-то сделать. Пишется в
скобках.
Практически все методы принимают
аргументы. Например, внутри скобок после
метода Destroy мы должны указать, что
именно мы уничтожаем.
А после метода AddForce мы должны
указать, в каком направлении мы движемся
и, через запятую, какой вид силы применяем

17.

Персонаж и оружие | Урок 9
Скрипт стрельбы
Создадим скрипт, который будет спавнить пули –
Shoot.
7 – переменная объекта-пули, которую будем
спавнить
8 – переменная трансформа, точка, где будем
спавнить
12 – проверка одного нажатия на кнопку мыши.
(0 в скобках означает ЛКМ, 1 – ПКМ, 2 – колесико)
14 – спавним объект. В скобках указываем ЧТО
спавним, ГДЕ появляется, какой ПОВОРОТ
[SerializeField] GameObject bullet;
[SerializeField] Transform shootPoint;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Instantiate(bullet, shootPoint.position,
bullet.transform.rotation);
}
}

18.

Персонаж и оружие | Урок 9
Создание объектов
Чтобы воспользоваться скриптом, надо:
1)
Создать на сцене объект пули, сделать
его размеры 0.1, назвать Bullet
2)
Добавить Rigidbody и поместить этот
объект в окно Project
3)
На сцене создать пустой объект и
назвать ShootPoint
4)
Поместить скрипт на него и заполнить
переменные

19.

Персонаж и оружие | Урок 9
Вот что будет, если запустить игру и нажимать ЛКМ.
Получился отличный спавнер! Но до стрельбы еще кое-чего не хватает…

20.

Персонаж и оружие | Урок 9
Запуск пуль вперед
Теперь надо сделать так, чтобы после спавна снаряд
сразу же толкало вперед. Сделать это можно уже
знакомым нам методом AddForce.
9 – скорость пули
15 – сохраняем созданный объект в переменную,
чтобы можно было обратиться к нему
17,18 – забираем компонент Rigidbody и толкаем в
направлении вперед (forward)
[SerializeField] GameObject bulletPrefab;
[SerializeField] Transform shootPoint;
[SerializeField] float power;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameObject newBullet = Instantiate(bulletPrefab, shootPoint.position,
bulletPrefab.transform.rotation);
newBullet.GetComponent<Rigidbody>().AddForce(shootPoint.forward
* power * Time.deltaTime, ForceMode.Impulse);
}
}

21.

Персонаж и оружие | Урок 9
Теперь новосозданные пули летят вперед (вдоль
синей стрелки в окне scene)

22.

Перерыв
Сыграем в игру?

23.

Персонаж и оружие | Урок 9
Самоуничтожение пуль
Пули врезаются в объекты и не уничтожаются. А
если мы стрельнем в небо, то пуля будет постоянно
лететь и загружать компьютер. Поэтому создадим
скрипт BulletController и прикрепим на префаб(!!!)
пули.
9 – удаление с таймером. На первом месте
аргумента указываем, что удалить, на втором –
через сколько секунд
12, 14 – при соприкосновении с чем-либо удаляем
пулю
void Start()
{
Destroy(gameObject, 3);
}
private void OnCollisionEnter(Collision collision)
{
Destroy(gameObject);
}

24.

Персонаж и оружие | Урок 9
Где искать готовые скрипты
Хоть мы и программируем игры, мы не должны все
создавать сами. Некоторые механики уже создали
сотни раз, и иногда лучше воспользоваться чужими
наработками, чтобы сэкономить время.
Однако, это не значит, что мы не должны понимать,
как та или иная механика работает!
Так, например, мы можем найти в AssetStore много
скриптов на передвижение. Стоит лишь вбить в
поисковик First Person Controller

25.

Персонаж и оружие | Урок 9
Если поставить в параметрах бесплатные ассеты, то
найдем несколько интересных вариантов. Все эти
ассеты предоставляют по сути готовое решение
управления персонажем от первого лица.
Большинство из них довольно сложные даже в
настройке, поэтому возьмем Mini First Person
Controller. Скачем и импортируем его

26.

Персонаж и оружие | Урок 9
Mini First Person Controller
Зайдем в папку с ассетом.
Перейдем в папку Scripts и увидим 3 файла:
1) Папка с дополнительными фичами для игрока
2) Скрипт вращения камерой
3) Скрипт передвижения объекта через кнопки
Далее изучим содержимое папки Components:
1) Скрипт кувырка
2) Скрипт добавления звуков
3) Скрипт проверки, стоим ли на земле
4) Скрипт прыжка (работает только с 4 скриптом)
5) Скрипт приближения камеры

27.

Персонаж и оружие | Урок 9
Игрок на месте
Перетащите игрока на сцену. Лучше всего
перетащить вторую версию, т.к. там есть сразу все
механики для управления.
Помимо всего прочего, удалите основную камеру,
потому что в игроке она и так будет. А две камеры
не могут одновременно показываться, поэтому
нужно контролировать этот момент

28.

Персонаж и оружие | Урок 9
Совмещаем стрельбу
Перед тем как добавлять стрельбу, стоит добавить
пушку, из которой будем стрелять.
Ее можно скачать из ассет стора или сделать при
помощи примитивов.
Выбирайте оружие, подходящее под тематику
вашего проекта. Мы скачаем что-то
минималистичное и космическое:

29.

Персонаж и оружие | Урок 9
Установка оружия
Поместите оружие перед игроком. С той стороны,
куда смотрит камера.
Камеру можно убрать немного назад, а оружие
уменьшить, чтобы оно не было слишком огромным.

30.

Персонаж и оружие | Урок 9
Совмещаем стрельбу
Переместите ваше оружие внутрь камеры, а не
игрока. Только так оно будет поворачиваться
привычным для нас образом.
Для стрельбы не хватает одного: пустого объекта на
краю пушки, из которого будет происходить
выстрел. Создайте его внутри пушки и поместите
немного дальше дула.
Добавьте скрипт стрельбы на персонажа и
настройте его так же, как вы делали ранее:

31.

Персонаж и оружие | Урок 9
Отлично! Теперь у нас есть оружие, которое стреляет, и игрок, который
управляется. В следующий раз добавим врагов, которые будут отличной
мишенью

32.

Персонаж и оружие | Урок 9
Рефлексия
Сегодня я:
Понял, что…
Смог…
Узнал о…

33.

Персонаж и оружие | Урок 9
Сегодня мы с вами
Узнали, как правильно двигать объекты
Создали объект при помощи скрипта
Создали управляемого персонажа
Реализовали механику стрельбы

34.

Время вопросов!

35.

Персонаж и оружие | Урок 9
На следующем уроке
Размещаем двери между комнатами
Добавляем механику открывания и закрывания
дверей по кнопке
Скачиваем звуки и учимся их воспроизводить в своей
игре

36.

Персонаж и оружие | Урок 9
Домашнее задание

Реализуйте механику стрельбы и перемещения персонажа,
если не успели на уроке

Потренируйте скорость печати на английском языке
на тренажере

37.

Словарь терминов
Учим новые слова!
Аргумент – это данные, которые мы подаем функции и с которыми она может что-то сделать. Пишется в
скобках.

38.

Словарь английских слов
Учим новые слова!
Force |fɔːrs| – сила, мощь
Shoot |ʃuːt| – стрелять
Bullet |ˈbʊlɪt| – пуля
Gun |ɡʌn| – ружье, оружие
First person |fɜːrst ˈpɜːrsn| – от первого лица
English     Русский Правила