Пятница, 29 Марта 2024, 12:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Дальность обзора/область видимости
Дальность обзора/область видимости
polousДата: Вторник, 05 Августа 2014, 11:24 | Сообщение # 1
частый гость
Сейчас нет на сайте
Люди добрые, подскажите!) [C#; Unity]

Делаю TBS (по типу X-Com и тп). У персонажей должна быть дальность обзора, в пределах которой персонаж способен обнаружить врага. Область видимости персонажа - это сектор круга с переменными радиусом круга и углом сектора.
Подскажите, каким образом это можно реализовать в коде? Как я не пытался ввести запрос в поисковике "дальность обзора", "угол обзора", "туман войны", "область видимости", "field of view" и тп - выдается информация по скриптингу камеры и ее настроек или дальности прорисовки местности, что не относится к моей задаче...
Кто сталкивался с подобными вопросами, есть идеи по реализации?

Добавлено (05.08.2014, 11:24)
---------------------------------------------
фактически, мне нужно лишь одно условие - если враг попал в эту область, он виден персонажу и начинается бой, если нет, то все курят, никого не видать. Можно даже самые общие рекомендации дать, чтоб я хоть понял, с чего мне начать в этом вопросе.

FolleahДата: Вторник, 05 Августа 2014, 11:45 | Сообщение # 2
Архитектор
Сейчас нет на сайте
Проверяешь радиус вокруг игрока с помощью этой функции.



Сообщение отредактировал Folleah - Вторник, 05 Августа 2014, 11:45
polousДата: Вторник, 05 Августа 2014, 13:24 | Сообщение # 3
частый гость
Сейчас нет на сайте
Спасибо!!!
сразу пару вопросов:
1) эта функция проверяет вокруг объекта в определенном радиусе наличие другого калайдера... как это сделать в области, отличной от круга? или может как-то запретить срабатывание этой функции при определенных углах?
2) как программно воплотить понятие "видно/не видно" врага? например, используя эту функцию отслеживания в радиусе других калайдеров, как сделать, чтобы вне заданного радиуса объект был invisible, но при при этом существовал и выполнял в свой ход заданные операции - перемещение, поиск врага и прочее?

Добавлено (05.08.2014, 13:24)
---------------------------------------------
Renderer.OnBecameVisible(), Renderer.isVisible и Renderer.enabled, наверное, пригодны для 2ого пункта, нужно пробовать


Сообщение отредактировал polous - Вторник, 05 Августа 2014, 13:26
MANMANAДата: Вторник, 05 Августа 2014, 13:29 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Прилепи ты к голове пирамиду (если сложно с пирамидой, используй куб, вытяни как нужно) и проверяй его столкновения с коллайдерами друзей и врагов. Посмотри скриншоты Commandos, там даже визуально это показано.
Сразу тебе и направление, куда смотрит персонаж.
По мне, сфера больше подходит для определения зоны слышимости.
........................................
.........................................
................_______..............
.............../|.....o...|..............
............./ . |....|....|.............
........./\/___|_/_\__|............
.........\/.......................
........_|_........................
..........|.........................
........./\..........................
...................................

Видимость/невидимость через renderer.enabled = false; либо gameObject.SetActive(false);


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Вторник, 05 Августа 2014, 13:35
polousДата: Вторник, 05 Августа 2014, 13:55 | Сообщение # 5
частый гость
Сейчас нет на сайте
MANMANA, ты крут!) я не догадался до этого) И по поводу зоны слышимости тоже опередил, т.к. это также необходимо будет в дальнейшем. Спасибо!
MANMANAДата: Вторник, 05 Августа 2014, 14:53 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
всегда пожалуйста

http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
NovatorvladДата: Вторник, 05 Августа 2014, 17:45 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Цитата polous ()
"дальность обзора", "угол обзора"

На хабре есть замечательная статья.


Манипуляция математическими данными гораздо менее затратна в плане ресурсов.


Девбложек

Сообщение отредактировал Novatorvlad - Вторник, 05 Августа 2014, 17:46
polousДата: Вторник, 05 Августа 2014, 18:35 | Сообщение # 8
частый гость
Сейчас нет на сайте
Спасибо, статья действительно классная!

Пока вот не особо понимаю, как применить способы, предложенные MANMANA и Novatorvlad, в случае, когда враг по факту находится в области видимости, но при этом пребывает за каким-либо препятствием, полностью скрывающим его. В этом случае, даже при условии, что в программе коллайдер обзорного объекта (например, пирамиды) пересечется с коллайдером врага, он не должен быть обнаружен и бой не должен быть начат.

Правильно ли я мыслю, что здесь нужно применять рэйкаст и проверять между коллайдерами персонажа и врага наличие коллайдера стены, относящейся к другому тэгу нежели коллайдер врага?


Сообщение отредактировал polous - Вторник, 05 Августа 2014, 18:36
allodsДата: Вторник, 05 Августа 2014, 18:54 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
кидай рейкасты
NovatorvladДата: Вторник, 05 Августа 2014, 21:47 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Поддерживаю идею с рейкастами. Это самый простой и наименее трудозатратный способ. Хотя не без изьянов.

Девбложек
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Дальность обзора/область видимости
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг