Не указал такой вариант, потому что это в корне неправильно. Например, если нужно во время игры изменять угол обзора бота, дальность видимости бота и другие факторы. Призма может попросту не вписаться. К тому же это работает не так уж и быстро. Особенно, если ботов много.
Тригонометрия в помощь. Есть разные алгоритмы, по которым можно получить точку пересечения примитивов и для каждого примитива алгоритм свой. В любом случае парой строчек кода здесь не обойдешься. Придется вручную перебирать все объекты на сцене, брать у них данные о коллайдере и использовать в своем алгоритме. Конечно, я могу ошибаться. Возможно класс Physics может немного облегчить эту задачу.
Из предыдущих тем я понял, что ты хочешь реализовать зону видимости бота в виде прямой треугольной призмы. Если да, то проверять с такой призмой все объекты - бессмысленно. Проще сравнить угол поворота бота с игроком. Если бот смотрит на игрока, то уже пускать до него обычные лучи, дабы отследить препятствия на пути к игроку. Ты же кидал видео, в котором была нужная тебе система AI. Там все сделано было на лучах. Так напиши такую же. Так же я тебе скидывал в ЛС свой вариант возможной реализации AI, который, на мой взгляд, добавил бы больше реалистичности ботам, т.к. там учитывалась еще и скорость реакции бота.
Сообщение отредактировал Storm54 - Среда, 12 Марта 2014, 22:48
Экстрасенсы сейчас в отпуске, так что некому сказать, что именно у тебя не так не посмотрев на код. Могу только дать совет: Вообще не изменяй timeScale. Лучше сделай переменную, отвечающую за состояние игры и в зависимости от ее значения управляй всеми игровыми функциями.
Возникнет куча проблем. К примеру, первое что пришло на ум, физика. Попадаешь пулей в один объект разрушаются все. Это только на первый взгляд. Я уверен проблем будет очень-очень много.
На мой взгляд это самый оптимальный вариант для статики. Кстати, объекты же можно и не соединять. Главное, чтобы они одну и ту же развертку использовали. Тогда можно будет вытворять с объектами все, что угодно.
Цитата
Или 2048 и 1024 - разницы практически никакой?
Если не подходить вплотную и не приглядываться, то никакой. А для более детального отображения объекта(когда игрок подходит очень близко) можно использовать LOD - включать объект, на котором материал с текстурами высокого разрешения.
И как? Ведь lod действет лишь на каждую модель. А об общем lod-e я не слышал
Можно в каком-нибудь 3ds максе загрузить все объекты, объединить их и создать текстурную развертку. Тогда эти объекты будут использовать один материал.
Цитата
Почему так много - карта нормалей, спекулар, цвет и все это в одной текстуре.
Ну так сделать 3 атласа: дифуз, нормал и спекуляр. Если каждая текстура будет с разрешением 1024x1024, то можно будет в такой атлас запечь больше 4-х текстур. Это уже уменьшает количество материалов в разы. Что касается размера текстуры. Может я и ошибаюсь, но размер текстуры незначительно влияет на производительность(у меня в играх при любой детализации текстур разница фпс очень мала) Тут будет влиять только аппаратное ограничение видеокарты и размер видеопамяти. Но сейчас видеокарты загружают текстуры очень больших размеров ( 16384х16384 ), а может уже и больше.
Сообщение отредактировал Storm54 - Воскресенье, 09 Марта 2014, 20:08
Нужно смотреть, сколько одновременно текстур видно в кадре. У меня ~100 текстур. GTX 570 стабильно выдает не ниже 100 кадров (разрешение 1920x1080) Можно создавать мета-текстуру, которая будет содержать в себе несколько обычных текстур, создать на основе этой текстуры материал и накладывать на объекты. Правда я так никогда не делал. Вообще таких серьезных проблем с производительностью лично у меня не возникало, хотя железо не топовое. Лучше в последствии поиграться с LOD - маленькие объекты полностью выключать, а большие объекты объединить в один и создать для него общую текстурную развертку.
На мой взгляд это уже какое-то издевательство. Зачем тратить столько времени на такой способ оптимизации? Unity3d стандартными средствами позволяет добиться хорошего FPS. Запускать игру, скажем, с очень маленькой дальностью прорисовки теней, хорошим LOD можно на очень дешевом компьютере. Стоимость комплектующих среднего класса сейчас ничтожно мала. Даже бюджетные видеокарты, например, GTX 750, дают приличную производительность. Возможно, такой подход и был бы уместен во времена AGP видеокарт, но точно не сейчас. Все разработчики стремятся максимально быстро и дешево выпустить свой продукт, а у Вас получается пустая трата времени. Даже, если в игре будет 100 FPS на видеокарте GeForce 8600, то мало кто оценит такую производительность. Большая часть геймеров сидит на хорошем железе, купленном для всяких крузисов, и им нужно подавать именно "Графон". Я советую не доходить до фанатизма. Займитесь непосредственно геймплеем.
Сообщение отредактировал Storm54 - Воскресенье, 09 Марта 2014, 15:24