Similar presentations:
Godot. Game engine
1.
Урок #32.
13Добавление противника
Найдем и
продублируем сцену
нашего персонажа
Переименуем его в
«Enemy.tscn»
И еще раз изменим
имя с «Player» на
«Enemy»
3.
14Рисование уровня
Перетаскиваем картинку из «assets» в поле с текстурой, у
объекта «Sprite»:
Настраиваем
прямоугольник коллизии,
не забываем про ось X
4.
15Скрипт противника
Нажмем правой кнопкой мыши по «Enemy» – Расширить
скрипт – наследует: «Actor.gd» - Создать
5.
16Настройка коллизии
В «Collision» укажем слой «Enemy» и маски «Player» и
«World»
6.
17Написание кода
Открываем код «Enemy.gd» и пишем следующий код:
7.
18Добавление противника на уровень
Откроем «LevelTemplate» и перетянем «Enemy.tscn» на
сцену
Противник так же как и игрок
должен быть «Ребенком» для
«LevelTemplate»
Сохраним и
протестируем уровень
8.
19Прикрепление камеры к персонажу
Откроем сцену с персонажем и добавим свойство
«Camera2D». Включаем параметр «Current»
Проверим свойста «Drag Marign H и V». Включим их, если
они отключены. Проверим работу камеры
9.
20Настройка параметров камеры
Если камера
сильно дергается,
попробуйте изменить
параметры «Drag Margin»
Попробуйте
уменьшить персонажа
вместе с противником, изменив
параметр «Scale»
10.
10Добавление «слабой точки» противника
Открываем свойства противника и выбираем «Area2D»
Переименуем его в
«StompDetector»
11.
3Настройка свойства
Выставляем свойству следующие параметры:
12.
4Выбор формы «слабой точки»
Добавим к нему
подсвойство
«CollisionShape2D»
В окне справа
выберем форму
«RectangleShape2D»
13.
5Размещение «слабой точки»
Размещаем прямоугольник коллизии
немного больше противника – это
упростит игру и позволит избежать
ложных промахов
Если выбрать
«StompDetector», то
его центр будет под
противником
Чтобы
исправить
это,
поднимите его
на нужный
уровень и
опустите
коллизию
отдельно
14.
6Программирование логики
Выбираем «StompDetector» – владка «Узел» - body_entered –
выбираем «Enemy» - Присоединить
15.
7Добавляем атаку персонажу
Добавляем «EnemyDetector» персонажу – CollisionShape2D
– RectangleShape2D – Visability – Выбираем цвет коллизии
16.
8Атака персонажа
Разместим «EnemyDetector» таким образом. Не забудь
сделать его немного больше персонажа и поднять красный
крестик в центр персонажа
17.
9Программирование логики
Выбираем событие «AreaEntered» и присоединяем его к
«Player». Сохраняем.
18.
10Написание кода противника
Откроем скрипт противника и напишем следующий код:
Здесь описан случай, когда
противник не умирает, а иначе
срабатывает функция die().
Функция будет срабатывать когда персонаж падает на
“голову” противнику и удалять его
19.
11Написание кода игрока
Откроем скрипт персонажа и напишем следующий код:
Здесь описана переменная высоты отскока персонажа при
приземлении на противника. Сохраним код и проверим его,
нажав F6
20.
12Что делать, если код не работает?
Галочка на Monitorible у
Enemy StompDetector,
Layer - 2, Mask - 1
Проверь:
Mask - 2 у Player
EnemyDetector
Попробуйте подвигать
коллизии, проверьте,
что центры стоят на
местах
21.
13Попробуй следующее расположение
В случае с игроком, может
помочь опустить центр
EnemyDetector вниз персонажа,
а CollisionShape перенести на
центр
22.
14Поражение персонажа
Выбираем игрока – EnemyDetector – Узел – body_entered –
Player – Присоединить
23.
15Код поражения
Откроем скрипт игрока и добавим туда команду удаления
противника. Сохраним. Проверим через F6
Если игрок умирает при прыжке
сверху на противника,
попробуйте поднять
EnemyDetector немного выше
24.
16Проверь свой код!
Персонаж
25.
17Проверь свой код!
Персонаж
26.
18Проверь свой код!
Противник
27.
19Проверь свой код!
Actor
28.
20Проверь узлы!
Противник
Игрок
Уровень
software