Part 9 https://dzen.ru/a/Y8F9L0Me-RGcLy4S
У нас есть персонаж, есть окружающая среда и, наверное, Вам не терпится добавить врагов, которые оживят игру, ведь просто ходить по дому совсем не интересно. Жанр игры стелс подразумевает, что нам не обязательно с кем-то сражаться, поэтому цель этой игры провести Джона Лимона к выходу из дома с привидениями так, чтобы его не заметили "враги".
В ресурсах у нас есть две дополнительные модели - это гаргульи и призраки. Гаргульи представляют из себя каменные статуи на постаменте, поэтому из них мы сделаем статичных врагов, то есть они будут стоять на месте. А призраки могут перемещаться по дому самостоятельно при помощи системы навигации NavMesh. Ими мы займемся в следующей части.
Для начала давайте создадим статичных врагов горгулий.
В окне проекта перейдите в папку Assets > Models, найдите объект «Gargoyle»и перетащите его на сцену. Поскольку в доме с привидениями нужно несколько горгулий, мы создадим из этого объекта префаб, чтобы потом можно было его использовать многократно без лишней работы. Перетащите игровой объект «Gargoyle» из окна иерархии (именно из него, а не с игровой сцены) в папку Assets > Prefabs в окне Project. Когда появится диалоговое окно Create Prefab, кликните кнопку «Original Prefab».
Давайте откроем созданный префаб горгульи и настроим его. И первое, что необходимо обязательно сделать - это изменить свойство Position компонента Transform на (0, 0, 0), чтобы экземпляры префаба создавались без смещения.
Теперь давайте анимируем горгулью, чтобы добавить игре динамики и увлекательности. Горгулья будет пытаться поймать игрока.
У горгульи есть только одна анимация, поэтому ее контроллер анимации будет очень простым.
В окне «Project» перейдите в папку Assets > Animation > Animators щелкните правой кнопкой мыши и выберите Create > Animator Controller. Назовите новый контроллер анимации «Gargoyle» и дважды щелкните по созданному контроллеру , чтобы открыть окно аниматора.
В окне «Project» перейдите в Assets > Animation > Animations и перетащите анимацию «Gargoyle@Idle» из окна Project в окно Animator. Это создаст состояние Idle Animator.
И осталось связать созданный контроллер с объектом горгульи:
Теперь, если Вы запустите игру, то увидите, что горгулья стала двигаться.
Теперь давайте сделаем так, чтобы Джон Лимон мог столкнуться с горгульей, а та, в свою очередь могла осветить его при помощи фонарика и увидеть его.
Для этого нам необходим компонент, который отвечает за столкновения - коллайдер. Добавьте префабу горгульи Capsule Collider и настройте его следующим образом:
- Измените свойство Center на (0, 0.9, 0)
- Измените свойство Radius на 0,3 .
- Измените свойство Height на 1,8.
Теперь Джон Лимон сможет столкнуться с горгульей, но горгулья все еще не сможет "обнаружить" Джона Лимона. Для этого мы создадим еще один коллайдер типа триггер. Напомню, что коллайдеры-триггеры позволяют проходить сквозь себя, но при этом могут сигнализировать нам о том, что они были задеты. Если Джон Лимон зайдет в область этого коллайдера-триггера, то мы об этом узнаем, и с помощью скрипта сможем реализовать окончание игры, потому что Джон Лимон обнаружен, пойман и умер от страха.
Создайте еще один игровой объект в качестве дочернего элемента игрового объекта «Gargoyle» и назовите его «ViewArea». Это область зрения горгульи, попадая в которую наш кот будет обнаружен.
Во время анимации горгулья смотрит вперед и немного вниз, поэтому вам нужно изменить положение игрового объекта ViewArea, чтобы оно соответствовало взгляду горгульи. В Инспекторе в компоненте Transform и измените
- свойство Position на ( 0 , 1.4 , 0.4 )
- свойство Rotation на ( 20 , 0 , 0 )
Добавьте этому объекту Capsule Collider, у которого включите свойство триггер. Настройте параметры коллайдера:
- свойство Center на ( 0 , 0 , 0.95 )
- свойство Radius на 0.7 .
- свойство Height на 2
- свойство Direction с Y-Axis на Z-Axis .
Вот, что должно в итоге получиться:
Теперь, когда Вы создали триггер, нужно написать сценарий того, что происходит, когда в него входит Джон Лимон. Выберите объект ViewArea и добавьте ему компонент скрипта с именем "ObserverController". Созданный скрипт переместите в папку Scripts.
В следующей части будем писать скрипт для горгульи.
Part 11 https://dzen.ru/a/Y8TYEFnSqB4PoRSn