22

Raycast`s Path Of Despair

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

Начать я решил с рейкастов.

Если персонаж заходит за предмет окружения с тегом "Environment" и добавленным скриптом VisibleInvisible:

Raycast`s Path Of Despair Unity, C, Scripting, Инди, RPG, Low poly, Gameplay, Видео, Длиннопост

В этом скрипте указывается стандартный материал объекта, и материал с прозрачностью 70%.

Чтобы сильно не грузить сцену кучей проверок в Update было ли соприкосновение с определенным объектом или нет, я решил сделать все это в скрипте персонажа.

Raycast`s Path Of Despair Unity, C, Scripting, Инди, RPG, Low poly, Gameplay, Видео, Длиннопост

На старте находим нашего игрока (этого можно было бы избежать, если бы не было смен сцены, добавили бы просто в инспекторе ссылку на персонажа и все).

В update кидаем луч из камеры в игрока, проверяем на попадание в нужный тег. Заведомо определив GameObject go ( для того, чтобы в дальнейшем включить ему обратно стандартный материал). А дальше проверки если цель изменилась - включаем старой цели стандартный материал, а новой цели меняем на прозрачный.

Raycast`s Path Of Despair Unity, C, Scripting, Инди, RPG, Low poly, Gameplay, Видео, Длиннопост

А в этом скрипте часть логики на видимость противником нашего персонажа.

Если персонаж в зоне агро радиуса, то получаем bool CheckPlayerVisible если true , включается логина достижения цели или атаки, если false - продолжение патрулирования или ожидания.

Метод Agro увеличивает агро радиус у противника, и запускает Invoke на восстановление его к стандартному значению. Стоит, например 2 врага друг от друга на 30 метрах.  Агро радиус у обоих 20 метров. Если 1 враг агрится на персонажа, то он запускает метод Agro у соседнего врага, чтобы он тоже "увидел" игрока и соответственно сагрился, если персонаж в прямой видимости( CheckPlayerVisible никто не отменял ).


Ну, как-то так. Если кому-то будут интересны такого рода описания - дайте знать.

Ну и на последок ссылка на группу в вк =) https://vk.com/pathofdespair

Кто хочет быть в курсе всех новостей - добро пожаловать.

Дубликаты не найдены

+6

По первому пункту.

1. Зачем расстояние на 10к у райкастов?

2. Почему райкаст не через RaycastAll? Если я правильно понимаю код, если будет стоять несколько деревьев в ряд, или стена за деревом большим, прозначным будет становится только ближний объект к камере.

3. Не думал о таком? Реализуется довольно просто, выглядит в разы лучше.


По второму пункту.

Костыльнул, поздравляю)

У тебя не должен увеличиваться радиус видимости игрока, это не правильно.

Логика должна быть примерно такая.

1. Враг видит игрока.

2. Рейкастишь сферой (от врага) 30м вокруг других врагов.

3. И всем найденным врагам кидаешь в какой-нить метод вида "CheckThisAreaForThePlayer", последнее актуальное метоположения игрока. Враги срываются, и бегут проверять область. И если они замечают игрока со своим радиусом обнаружения, начинают бой.

Тому врагу, который первый заметил игрока, можно приделать анимацию свиста, или еще чего либо. В духе, он замечает противника, свистом сигнализирует своим союзникам о наличии и местоположении игрока. Они бегут на помощь.

Указывать нужно именно точку, а не самого игрока, чтобы у него была возможность подсьебаться.

Если игрок успел свалить, пускай попатрулируют область последнего нахождения, и валят на свои точки первоначальные, делать свои дела.


Или идем еще дальше, создаем какой-нить класс "Squad". И собираем уже врагов в отряды. А там чего только нельзя реализовать. Разбитие врагов на солдат, командиров. Виды солдат. Их поведение. Кто кого должен защищать, кто как должен на что реагировать. И т.д.

раскрыть ветку 1
0

Спасибо за развёрнутый комментарий 👍🏻 Буду исправлять

+5
Если кому-то будут интересны такого рода описания - дайте знать.

даю знать.

Интересно почитать решения различных задач)

+1

Хотелось бы по графике пост, в частности, это чистое лоуполи, одна текстура на все объекты? Или есть нарисованные, и какой размер текстур в таком случае? Короче по тех.части графики.

+1
Конечно подписался на вас, а группа есть только в ВК? Ужасно для тех людей как я которые не пользуются им ))
раскрыть ветку 1
0

Группа была создана в попыхах в прошлую пятницу, чисто для обратной связи, помимо комментариев на Пикабу. Что жало свои плоды, уже несколько интересных знакомств заведено :) в будущем постараюсь создать на других площадках группы, но не знаю когда. В любом случае спасибо за комментарий и интерес к проекту!

+1

Наконец-то не рекламный пост. По-крайней мере не полностью.

0
1. По кадрам с деревом видно, что не 70%. А что-то другое. Так как нет цвета. Дерево просто белое. То есть материал слетает.
2. В классе визИнвиз гетКомпонент надо убрать в эвэйк. А не делать это каждый кадр.
3. Если класс хайдАзеМатериал висит на игроке. То это gameobject. Без файнда.
4. Зачем создавать GameObject go. Если вы его дергаете 2 раза всего?
5. Про райкастОл выше правильно написали.
0

Неделю уже играю. Очень захватывает! Спасибо разраб за отсутствие рекламы и доната! Начинаю тебе памятник из мрамора делать.

Похожие посты
Возможно, вас заинтересуют другие посты по тегам: