Пятница, 29 Марта 2024, 11:06

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Персонаж в доме или на улице? Как проверить?
Персонаж в доме или на улице? Как проверить?
robertonoДата: Пятница, 20 Июня 2014, 12:50 | Сообщение # 1
Чокнутый Кот
Сейчас нет на сайте
Всем привет! Представьте город, где 100 домов. Как мне проверить, игрок в доме или на улице? Дома могут быть разрушены, как полностью так и частично и это уже решает игрок.
Подтолкните на идею, в гугле ничего не нашел по теме.
DantorSДата: Пятница, 20 Июня 2014, 12:59 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
По мне лучший и самый надежный способ определить - поставить на каждый дом триггер, и - если гг входит в триггер - он находиться в доме, если не входит - то он на улице

Сообщение отредактировал DantorS - Пятница, 20 Июня 2014, 13:00
robertonoДата: Пятница, 20 Июня 2014, 13:06 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
DantorS, Я тоже так думал и наверно это единственное решение, но его надо доработать.
Триггеры вообще нагружают систему или нет?
Как я говорил выше, дома могут менять свою высоту. Как вместе с этим менять коллайдер? Прогонять все блоки здания на поиск самого высокого не вариант, их может быть несколько тысяч.
DantorSДата: Пятница, 20 Июня 2014, 13:26 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Изменяешь по скрипту - если дом разрушился ращмер тригерра - меньше. Хотя можно селать по другому. Делаешь полусферу, на неё лепишь текстуру неба. Получится у тебя скуполусфера. И делаеш рэйкаст вверх от гг. Если рэйкаст соприкоснулся с небом - ты наулице, если нет то ты в доме. Но тут ещё такой геморой - нужно как нибудь заносить в исключения рэйкаста дохринище объектов. Например если гг стоит под фонарным столбом, всякие самолёты, в общем все объекты кроме домов и неба.

Добавлено (20.06.2014, 13:26)
---------------------------------------------
Хотя можно сделать список объектов с которыми взаимодействует рэйкаст.
Оффтоп


Сообщение отредактировал DantorS - Пятница, 20 Июня 2014, 13:26
robertonoДата: Пятница, 20 Июня 2014, 13:28 | Сообщение # 5
Чокнутый Кот
Сейчас нет на сайте
Ну ладно, спасибо. Буду использовать идею с триггерами, ибо она самая простая.

Добавлено (20.06.2014, 13:28)
---------------------------------------------

Цитата DantorS ()
Снова массивы - твоя, по видимому, нелюбимая тема

почему ты так решил?)
Просто это слишком геморная идея. У меня все строительные объекты имеют один тег и заносить то что нужно игнорить совсем не вариант.
romgermanДата: Пятница, 20 Июня 2014, 13:38 | Сообщение # 6
старожил
Сейчас нет на сайте
Можно использовать Vector3.Distance, но это вариант не из лучших.
robertonoДата: Пятница, 20 Июня 2014, 13:41 | Сообщение # 7
Чокнутый Кот
Сейчас нет на сайте
romgerman, я читал что distance плох по производительности, да и здесь его будет трудно применить. Мне кажется триггер - то что нужно.
RangerДата: Четверг, 26 Июня 2014, 09:03 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Цитата robertono ()
я читал что distance плох по производительности

и чем же он плох?? там банальные арифметические действия.


mlpmmoДата: Четверг, 26 Июня 2014, 09:23 | Сообщение # 9
YBRONY
Сейчас нет на сайте
Берешь дом, рисуешь такого же размера спрайт залитый сплошным цветов, делаешь Opacity 0, привязку start to layout - Sprite position to Dom и далее событие Player Collision Dom -> Действие которое тебе нужно.
Съели Юнайцы biggrin
Состояния домом можно держать в Приватный значения, если пихать каждый дом в массив можно запутаться.
Это на скоряк придуманная идея, а вообще б, я держал все в масссивах, и подгружал только видимую часть, остальное удалял. Огромный мир + Оптимизация рулит

Добавлено (26.06.2014, 09:23)
---------------------------------------------
robertono, юный джедай, сколько должно пройти время чтобы ты сам своей головой решал задачи, а не просил советов по каждой мелочи ?


Простая арифметика (Web игра)

Сообщение отредактировал mlpmmo - Четверг, 26 Июня 2014, 09:22
Storm54Дата: Четверг, 26 Июня 2014, 10:05 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата robertono ()
я читал что distance плох по производительности

Теорема пифагора. Если не нравится, то там есть аналог этого метода, который возвращает квадрат расстояния, тем самым позволяя избежать вычисления корня. Работает чуть быстрее.


Сообщение отредактировал Storm54 - Четверг, 26 Июня 2014, 10:07
robertonoДата: Четверг, 26 Июня 2014, 11:46 | Сообщение # 11
Чокнутый Кот
Сейчас нет на сайте
Storm54, да, я видел. Типо магнитуда умножить на что то там.. было в документации. Я думал это просто тоже самое biggrin (а оказывается быстрее).
Почему distance тогда так сам не делает если это быстрее?

В любом случае дистанс не подходит, т.к. тут много ньюансов. Например маленький парк в центре дома и т.д.

mlpmmo, мир у меня не будет сильно большой, да и у меня уже есть своя оптимизация (некий CombineMesh, только улучшенный)

Цитата mlpmmo ()
и подгружал только видимую часть

Хотите поговорить о Oclusion Culling в Unity Free ? smile

Добавлено (26.06.2014, 11:46)
---------------------------------------------
хотя пара идей на эту тему и у меня есть

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

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