FPSController
Простая сцена
Standard Assets
FPSController
FPSController
Стрельба кубиками
Мишень
Скрипт попадания в цель
Много целей
Подсчет попаданий
Nav Mesh Agent
Agent
Navigation
Static платформа
Navigation Mesh
Двигающиеся мишени
Вражеская пуля
Враги тоже умеют стрелять
Слой врага
Матрица коллизии
Пуля-самоубийца
Здоровье игрока
2.30M

FPSController

1. FPSController

Федорищев Л.А.

2. Простая сцена

Создайте новую простую сцену с зеленой платформой и какими-нибудь
объектами, кубиками, например.

3. Standard Assets

В папку Assets проекта добавьте папку Standard Assets

4. FPSController

В ассетах найдите папку «Standard Assets». Там в префабах, как показано на
слайде, найдите префаб «FPSController». Перетащите его на сцену. И разместите
над зеленой платформой.

5. FPSController

Запустите сцену. Попробуйте «походить» по вашей сцене с помощью клавиш
WASD и мышки.

6. Стрельба кубиками

Добавьте возможность стрелять кубиками на правую или левую кнопку мышки,
как мы это делали в Практике №2.

7. Мишень

Создайте на сцене новый объект – капсулу. Это будет наша мишень!

8. Скрипт попадания в цель

Создайте новый c# скрипт HitScript и добавьте в него функцию onCollisionEnter
как показано на слайде. Добавьте этот скрипт нашей мишени – капсуле.
Запустите сцену и постреляйте кубиками в нее. При попадании мишень должна
исчезнуть.

9. Много целей

Создайте из цели префаб. И разместите на сцене несколько целей.

10. Подсчет попаданий

Добавьте в интерфейс счетчик сбитых целей. При попадании в цель
увеличивайте этот счетчик на экране.

11. Nav Mesh Agent

Сделаем наши мишени двигающимися. Добавьте префабу мишени компонент
NavMeshAgent.

12. Agent

Создайте новый скрипт, отвечающий за поведение мишени, как показано на
слайде. И добавьте его префабу мишени.

13. Navigation

В редакторе Unity откройте новую панель – Navigation.

14. Static платформа

Убедитесь, что платформа, по которой будут перемещаться цели, - статичная (на
слайде отмечена «Static»).
Затем перейдите на вкладку Navigation.

15. Navigation Mesh

Создадим Navigation Mesh, который будет использоваться для перемещения
нашими объектами. На вкладке Navigation перейдите в раздел Bake (наверху) и
нажмите кнопку Bake. В результате платформа должна покрыться бирюзовой
сеткой как на слайде – это мы создали Navigation Mesh.

16. Двигающиеся мишени

Запустите сцену. Мишени должны двигаться в случайных направлениях.
Мишени можно сбивать.

17. Вражеская пуля

Научим наши капсулы-мишени тоже стрелять. Стрелять они будут в нас (в
камеру). Пусть они стреляют шариками. Создайте шарик. Сделайте на его
основе префаб и назовите, например, EnemyBullet. Уберите галочку в поле
UseGravity (как показано на слайде), чтобы пули летели ровно и не падали.

18. Враги тоже умеют стрелять

Научите наши капсулы стрелять по аналогии со стрельбой игрока. Стрелять они
должны в момент изменения цели передвижения. Так что добавьте в скрипт
Enemy.js порождение «пули»-шарика. И добавьте ему силу движения с
коэффициентом 100. Направление пули – камера.

19. Слой врага

Вероятно, после первого выстрела наш враг (капсула) погибнет сам. Так как
столкнется с собственной пулей (помните, он умирает от наших кубиков). Это
логично, ведь он не знает, чья это пуля. Нас это не устраивает. Сделаем, чтобы
от своих пуль они не умирали. Нажмите на выпадающий список Layer. Там
кнопку Add Layer. Создайте два новых слоя: Player и Enemy. Префабам пули и
капсулы укажите слой Enemy. Игроку (FPSController) и кубику-пуле укажите
слой Player

20. Матрица коллизии

Настроим матрицу коллизии слоев. Зайдите в Project Settings. Потом в Physics.
Там уберите галочки в клетках, как показано на слайде. Протестируйте сцену.
Теперь капсулы должны бегать и стрелять в вас, при этом не умирая от своих
пуль.

21. Пуля-самоубийца

Капсулы будут создавать много шариков, летящих в разные стороны. Это может
сказаться на скорости компьютера (через некоторое время он не сможет
обрабатывать все летящие шарики). Поэтому нам надо уничтожать ненужные
пули, когда они уже не имеют шанса попасть в цель. Для этого напишите такой
скрипт, как на данном слайде. В этом скрипте пуля самоуничтожится через 10
секунд. Добавьте этот скрипт пуле-шарику.

22. Здоровье игрока

По аналогии с попаданием кубиков в мишени сделайте попадание пуль-шариков
в игрока. Но при попадании в игрока, его не надо уничтожать, у игрока надо
отнять здоровье. Создайте новый скрипт Player.cs, который добавьте объекту
FPSController. В этом скрипте создайте параметр Health (здоровье), с начальным
значением 100. При попадании пули-шарика (которую выпускают враги),
уменьшайте здоровье игрока на 1. Добавьте в интерфейс текстовое поле
HealthText, в котором отображайте текущее количество здоровья игрока.
English     Русский Rules