Похожие презентации:
Unity M1 L7
1.
Повтор2.
ПовторНа прошлом уроке мы с вами
создали врага, который может
патрулировать заданную
территорию
Нежелательно
3.
ПовторКто помнит, для чего нам
нужны эти две точки?
Нежелательно
4.
ПовторКто помнит, для чего нам
нужны эти две точки?
Эти две точки являются
границами, за которые не
может выйти наш враг
Нежелательно
5.
ПовторА как работает скрипт, для
патруля?
Нежелательно
6.
ПовторА как работает скрипт, для
патруля?
Как только враг выйдет за
правую, или левую границу,
скрипт отравляет врага в
противоположную сторону
Нежелательно
7.
Сегодня мы…Побольше поработаем со
скриптами
Научимся импортировать
уже написанные скрипты
Создадим скрипт для
здоровья игрока и врага
А так же научим врага и
игрока наносить друг другу
определённое кол-во урона
(а не убивать сразу)
Ух ты, а оно
мне
пригодится?
8.
Импорт скриптовДля начала давайте
исправим один баг в нашей
игре.
Вы наверное замечали, что
если много раз нажимать
кнопку прыжка, наш игрок
будет подпрыгивать всё
выше и выше?
Я могу
летать!
9.
Импорт скриптовДело в том, что мы не
проверяем, находится ли
наш персонаж на земле, или
нет, перед прыжком.
Но по хорошему мы должны
проверять, стоит ли наш
персонаж на земле, или нет
Я могу
летать!
10.
Импорт скриптовМы могли бы
самостоятельно написать
скрипт, который бы
проверял, находимся ли мы
на земле, или нет, но такой
скрипт уже был написан
разработчиками игр, так что
давайте просто возьмём и
импортируем его в наш
проект
Я могу
летать!
11.
Импорт скриптовПеред тем как начнём,
давайте вспомним, что такое
импорт
Проект
Проект
12.
Импорт скриптовПеред тем как начнём,
давайте вспомним, что такое
импорт
Импорт, это когда мы
добавляем что-то извне
NewScript
Импорт
Проект
Проект
13.
Импорт скриптовПеред тем как начнём,
давайте вспомним, что такое
импорт
NewScript
Импорт
Импорт, это когда мы
добавляем что-то извне
К слову, экспорт, это
наоборот, когда мы из
нашего проекта передаём
файлы в другое место
Проект
Проект
Экспорт
Scene1
14.
Импорт скриптовНапример, когда мы
скачивали картинки в
AssetStore, мы их
импортировали, или
экспортировали?
NewScript
Импорт
Проект
Проект
Экспорт
Scene1
15.
Импорт скриптовНапример, когда мы
скачивали картинки в
AssetStore, мы их
импортировали, или
экспортировали?
Конечно импортировали,
ведь мы их добавляли в наш
проект
NewScript
Импорт
Проект
Проект
Экспорт
Scene1
16.
Импорт скриптовИногда очень удобно
пользоваться
импортом/экспортом
файлов, особенно, если вы
работаете в команде
К счастью, в Unity очень
удобная система для
сохранения или загрузки
файлов
NewScript
Импорт
Проект
Проект
Экспорт
Scene1
Автор: Ли Владислав
+77018034090
17.
Перейдите по ссылке(преподаватель отправит в чат)
Скачайте файл
GroundDetection.unitypackage
Щёлкните, для
перехода на сайт
https://drive.google.com/drive/f
olders/1gFY0sX46rJfV8WV6Tm
BRIVZhddEyqwSX?usp=sharing
18.
Откройте скаченный файл(Убедитесь, что в Unity открыт
ваш проект)
19.
Если вы всё сделалиправильно, у вас
откроется вот такое
окно в Unity
Нажмите Import
20.
Скрипт GroundDetectionдолжен появиться в вашем
проекте, в папке Scripts
Не появился? Возможно,
папка со скриптами у вас
названа с ошибками.
Проверьте название всех
папок в вашем проекте
21.
Добавьте этот скриптнашему персонажу
22.
Ground DetectionДавайте внимательно
рассмотрим новый
компонент
23.
Ground DetectionДавайте внимательно
рассмотрим новый
компонент
Как вы думаете, что нужно
переместить в поле
«Collider2D»?
24.
Ground DetectionВ это поле нужно
переместить Collider нашего
персонажа (BoxCollider2D,
CircleCollider2D…)
>Вы можете переместить
компонент напрямую в окне
Инспектора
>Вы можете переместить
целиком игрока из окна
Иерархии в компонент
25.
Ground DetectionОднако с понятием Platform
Layer мы с вами ещё не
знакомы.
26.
Ground DetectionСтоя на платформе игрок
сможет прыгнуть
Платформа
Стена
Layer – очень похож на тэги,
однако его используют с
множеством объектов,
имеющих одинаковые
характеристики.
Платформа
Стена
Однако с понятием Platform
Layer мы с вами ещё не
знакомы.
Платформа
Вода
В воде игрок будет
плавать, если он это умеет
Вода
Платформа
В будущем игрок сможет
отталкиваться от стен
27.
Ground DetectionИзначально в проекте уже
есть несколько стандартных
Layer’ов, однако нам стоит
добавить отдельный Layer
для платформ.
28.
Ground DetectionТакже, как и с тегами, выберите любую платформу, и в верхней
части окна инспектора у вас будет возможность создать новый
layer и дать его объекту
1
2
3
29.
Ground DetectionВ завершении
остаётся установить
новый layer в нашем
компоненте
GroundDetection, а
так же установить
layer Platform на все
платформы в игре
30.
Ground DetectionЕсли вы всё сделаете
правильно, то когда
игрок будет касаться
платформ, у него будет
автоматически
ставиться галочка в
переменной
IsGrounded
Всё, что нам остаётся,
это добавить пару строк
в скрипт движения
31.
Сейчас наш скрипт выглядитследующим образом
32.
Первым делом создадимпеременную, в которой
сохраним GroundDetection
33.
Далее, спустимся чуть ниже, кместу, где мы прописываем
условие для прыжка
34.
И немного изменим условиеСимвол & называется
амперсанд
На клавиатуре это
Shift + 7
на английском языке
35.
С новой записью мы добавиливторое условие
Теперь оба условия должны
быть истинны, чтобы тело
условия заработало
Символы && в условии
обозначают И:
Если первое И второе
условии истины, то…
Не запутайтесь в скобках! У
условий и функций разные
скобки
If (условие1 && условие2)
36.
Ground DetectionТеперь, если вы ничего не
забыли, можете запустить и
проверить наше
нововведение
Игрок не сможет прыгать в
воздухе
Он сможет прыгать только
если находится на платформе
37.
Ground DetectionЧто можно было забыть:
⮚ Проверьте, дали ли вы
значение нашей новой
переменной gr в скрипте
Move
⮚ Проверьте, дали ли вы
новое значение layer
Platform у платформ
⮚ Нет ли ошибок в вашем
коде
38.
Здоровье и уронА сейчас самое время создать
в нашей игре такое понятие
как «здоровье»
Ведь без показателя HP (hit
points) наш игрок будет
умирать от одного касания с
врагами
Эта игра
слишком
сложная!
39.
Создаёте новый скрипт,назовите его
«HP»
40.
Для начала можетеизбавиться от функций
Start() & Update(), они
нам не понадобятся
41.
Далее, мы создадимпубличную переменную
hp, которая будет в себе
хранить кол-во здоровья
персонажей
Если этот скрипт будет у
игрока, то в этой
переменной сохранится
его здоровье, если
скрипт будет у врага, и
здоровье здесь будет
вражеское
42.
Затем, мы создадимпубличную функцию
Damage()
Она будет отвечать за
получение урона
Другими словами, если
наш объект кто-то захочет
ударить, то сработает эта
функция
43.
Однако, если нашегоперсонажа ударят, как
программа поймёт,
сколько урона должен
получить наш персонаж?
Вряд-ли все персонажи
наносят одинаковое
кол-во урона
44.
Для решения этойпроблемы нам поможет
одна особенность
функций:
Функции могут
принимать параметры
45.
Создав числовую переменную dmg внутрискобок функции, мы укажем программе,
что эта функция должна получить
определённое значение
В нашем случае это будет показатель
урона, который мы отнимем у здоровья
46.
Как только кто-то захочетнанести урон нашему
персонажу, мы вызовем эту
функцию, передадим в неё
урон, и отнимем его из
здоровья
hp -= dmg
Мы из переменной hp
отнимаем значение
переменной dmg
47.
Всё, что нам остаётся, этопосле получения урона
проверить, не опустилось ли
оно ниже нуля, если
опустилось, то удалить
нашего персонажа из игры
Сможете ли вы
самостоятельно
дописать скрипт?
48.
Если здоровье меньше илиравно 0, то мы удаляем
gameObject (владельца
скрипта)
49.
Здоровье и уронТеперь и игроку и врагу
нужно добавить наш новый
скрипт HP
HP
HP
50.
Здоровье и уронAttack
Теперь и игроку и врагу
нужно добавить наш новый
скрипт HP
Для нанесения урона мы тоже
создадим отдельный скрипт
HP
HP
51.
Здоровье и уронAttack
Теперь и игроку и врагу нужно
добавить наш новый скрипт
HP
Для нанесения урона мы тоже
создадим отдельный скрипт
Скрипт для нанесения урона
обязательно должен быть у
врага, а вот на счёт игрока,
решайте сами
HP
?
HP
52.
Создайте новый скрипт подназванием CollisionDamage
Он будет наносить урон
всем, у кого есть здоровье,
при коллизии (касании)
53.
Функции Start() & Update() нам непонадобятся
54.
Уронперсонажа
Следующая запись будет очень
похожа на скрипт Kill
Тег врага
(кому наносим урон)
Проверка на коллизию с объектом,
имеющим определённый тег
55.
Следующая запись будет оченьпохожа на скрипт Kill
Получаем доступ к компоненту HP
нашего противника, сохраняя его в
переменной hp
Наносим урон, с помощью
созданной нами функции Damage()
56.
Всё, что остаётся, передать нашскрипт CollisionDamage врагу, и
заполнить необходимые поля в
компоненте
Dmg – Сколько урона наносит персонаж
Tag – тег противника
(противник врага это наш персонаж)
57.
ПроверкаДавайте пройдёмся по списку,
всё ли мы сделали, чтобы
скрипты CollisionDamage и HP
заработали
1) В обоих скриптах нет ошибок
58.
ПроверкаДавайте пройдёмся по списку,
всё ли мы сделали, чтобы
скрипты CollisionDamage и HP
заработали
1) В обоих скриптах нет ошибок
1)
Player и враг имеют
компонент HP
59.
ПроверкаДавайте пройдёмся по списку,
всё ли мы сделали, чтобы
скрипты CollisionDamage и HP
заработали
1) В обоих скриптах нет ошибок
1)
Player и враг имеют
компонент HP
1) Как минимум враг имеет
компонент CollisionDamage
60.
ПроверкаДавайте пройдёмся по списку,
всё ли мы сделали, чтобы
скрипты CollisionDamage и HP
заработали
1) В обоих скриптах нет ошибок
1)
Player и враг имеют
компонент HP
1) Как минимум враг имеет
компонент CollisionDamage
1) У врага в компоненте мы
указали кол-во урона и тег
противника
61.
ПроверкаДавайте пройдёмся по списку,
всё ли мы сделали, чтобы
скрипты CollisionDamage и HP
заработали
1) В обоих скриптах нет ошибок
Всё верно? Тогда запускайте и
проверьте работу скриптов!
1) Как минимум враг имеет
компонент CollisionDamage
1)
Player и враг имеют
компонент HP
1) У врага в компоненте мы
указали кол-во урона и тег
противника
1) Игрок имеет тег Player
62.
ПроверкаОбратите внимание,
при касании с врагом,
игрок теряет здоровье,
а как только здоровье
станет равным нулю,
игрок погибает
63.
Дополнительное заданиеСможете ли вы самостоятельно
сделать аптечку?
Для этого понадобится добавить
в скрипт HP ещё одну функцию,
которая будет восстанавливать
здоровье
А так же добавить скрипт,
который будет похож на скрипт
CollisionDamage, но только
будет исцелять игрока