С Новым годом! Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

Почему объекты иногда застревают navmesh?

30.07.2021, 12:45. Показов 3117. Ответов 4

Студворк — интернет-сервис помощи студентам
Сделал 2 точки А и В внизу карты и вверху, перед запуском проверяю путь

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public bool GetAccessPath(Vector3 TargetA, Vector3 TargetB){
        bool ret = false;
        MeshAgentPath = new NavMeshPath();
        NavMesh.CalculatePath(TargetA, TargetB, NavMesh.AllAreas, MeshAgentPath);
        if(MeshAgentPath.status == NavMeshPathStatus.PathComplete){
            TargetCell = TargetB;
            MeshAgent = GetComponent<NavMeshAgent>();
            MeshAgent.updateRotation = false;
            MeshAgent.updateUpAxis = false;
            MeshAgent.Warp(TargetA);
            MeshAgent.SetDestination(TargetCell);
            ret = true;
            }
        return ret;
        }
Создаю объект

C#
1
2
3
4
5
++Num;
Obj[Num] = Instantiate(cell) as Cell;
Obj[Num].transform.SetParent(Cells.transform);
Obj[Num].GetComponent<NavMeshAgent>().speed = Speed;
if(!Obj[Num].GetAccessPath(TargetA, TargetB)){ Obj[Num].gameObject.SetActive(false); }
то есть если путь есть то вперед, если нет то объект отключается, при запуске так же задается скорость Speed рандомно (0.2-3), в апдейте только проверяется не достиг ли цели
C#
1
if(Vector3.Distance(transform.position, TargetCell) > 0.5f){  .....
Quality =none, Priority =0, Auto braking = false, Ang speed = 120, Acceleration = 8, radius 0.1, height 0.1
Agent => radius = 0.05, height = 1, step height = 0.001, max slope =45
Я запускаю много объектов, многие летят, некоторые на одном месте стопорятся и стоят там вечно на месте....
скорее всего что-то в настройке агента, но я уже все по всякому крутил, посоветуйте как его правильно настроить, мне всего лишь нужно чтобы они перемещались от А до В с монотонной скоростью...
Никак не доходит как его правильно настроить, да и почему одни летят до цели а другие стопорятся....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2021, 12:45
Ответы с готовыми решениями:

Как заставить игнорировать другие объекты NavMesh?
Как заставить игнорировать другие объекты NavMesh? Сейчас они летают друг друга толкают или не дают прохода, как их сделать всех...

Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет
Доброй ночи, кто может объяснить почему иногда отслеживает нажатие на три кнопки сразу, а иногда нет. И как выйти с ситуации *( P.S. Пишу...

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

4
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
31.07.2021, 18:11  [ТС]
решено, тема закрыта.
0
1 / 1 / 0
Регистрация: 16.09.2021
Сообщений: 2
29.10.2021, 15:58
Так а в чем было дело? У меня, видимо, схожая ситуация. Для теста я создал точку и двигаю ее по карте, а за ней просто ходит агент. Так вот в некоторые места отказывается идти, встает на месте. Это мой первый опыт с 3d navMesh. На 2d ходили просто туча агентов по похожей карте, а тут один застревает . Отпишите, если возможно, в чем у вас было дело.
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
29.10.2021, 16:16  [ТС]
Цитата Сообщение от Cpt_Trh Посмотреть сообщение
Так а в чем было дело? У меня, видимо, схожая ситуация. Для теста я создал точку и двигаю ее по карте, а за ней просто ходит агент. Так вот в некоторые места отказывается идти, встает на месте. Это мой первый опыт с 3d navMesh. На 2d ходили просто туча агентов по похожей карте, а тут один застревает . Отпишите, если возможно, в чем у вас было дело.
Я не знаю схожая ли у нас ситуация но я решил вопрос другим методом, дело в том что у меня объект который создаётся и направляется к точке В не меняет траекторию пока не доберётся, поэтому я изначально через агент получают координаты точек пути а потом просто этот объект двигается по этим точкам, взял один отрезок, дошел, взял следующий отрезок, так и была решена моя проблема...
Отмечу что у меня они тормозили при маленькой скорости перемещения, если увеличивал то переставали залипать, но мне нужно было чтобы они очень медленно двигались.
Да и еще влияет толщина и высота агента.
В общем как-то так...
1
1 / 1 / 0
Регистрация: 16.09.2021
Сообщений: 2
29.10.2021, 20:33
Спасибо за ответ. Проведу эту ночь за "методом тыка".

Добавлено через 4 часа 13 минут
Устранил проблему. Объясню, вдруг кому поможет.
У меня большая и сложная сцена. Это изометрия, вид сверху, открытые здания. На ней множество решеток, заборов и оград всяких. Каждый забор это, естественно, прутья или доски в ряд. После запекания карта выглядит как мозаика из мешей. Так вот к моим оградам. Когда я запекал карту, NavMesh от каждой грани, каждого прута в заборе создавал маленький меш, который соединялся с соседним и так далее. Это было похоже на веер. Каждый кто хоть раз запекал карту, вероятно понимает о чем я говорю. И мой агент, видимо путался, не мог понять куда ему идти и застревал на месте. Я прошелся по всей карте, поставил на месте заборов обычные стены, выключил все заборы, запек все по новой. Карта получилась чистая, без этих "вееров", кусочки меша все приличной формы, нету каши. После запекания вернул заборы на место.
Погонял агента по карте - он больше не застревает. Всем удачи!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2021, 20:33
Помогаю со студенческими работами здесь

Почему иногда функции передается значение int, а иногда - нет?
1 случай: void Function_1(int* &amp; rVarOne, int* &amp;rVarTwo) { /* Какие-то операции с указателями: rVarOne++; *rVarOne =...

Почему появляется Failed to create agent because it is not close enough to the NavMesh?
Все объекты у меня устанавливаются одинаково, вот и очередной ставлю, тестово... В коде только private NavMeshAgent MeshAgent; void...

Шарики застревают в проеме
Добрый день! Столкнулась с проблемой. Шарики через некоторое время начинают застревать в проеме (картинку прикладываю) ТО есть в...

Почему ИНОГДА не отображаются картинки на странице?
Страница содержит много (более 100) одинаковых картинок (размером менее 200 Б каждая), адреса относительные, типа &lt;img...

Почему иногда коды неправильно работают?
почему иногда коды не правильно работают ? много раз столкнулся такими проблемами пишу form1.Caption:='jdem tebe'; при активации этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru