Поиск пути
|
|
Valik_Fenko | Дата: Суббота, 28 Мая 2016, 20:09 | Сообщение # 21 |
почетный гость
Сейчас нет на сайте
| Да блин я школьник с IP как у обезьяны,сел писать алгоритм поиска пути.Пропащее дело.. Добавлено (28 мая 2016, 19:57) --------------------------------------------- оуу ааа Добавлено (28 мая 2016, 20:00) --------------------------------------------- Ток оптимизация гг просто.сделал сетку больше лаги опять начались( Добавлено (28 мая 2016, 20:09) --------------------------------------------- Так терь я знаю что смена тега жесть как нагружает это всё дело =(
Сообщение отредактировал Valik_Fenko - Суббота, 28 Мая 2016, 19:56 |
|
| |
EchoIT | Дата: Суббота, 28 Мая 2016, 20:12 | Сообщение # 22 |
старожил
Сейчас нет на сайте
| Цитата Так терь я знаю что смена тега жесть как нагружает это всё дело =(
Да, кстати, теги не совсем для этого предназначены. Лучше скрипт с переменной.
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 10:06 | Сообщение # 23 |
почетный гость
Сейчас нет на сайте
| И так опять восстал вопрос о поиске пути.Он работает отлично.Я его оптимизировал малость(теперь он записывает путь 1 раз,а не 30 раз в секунду).И проблема в том что при движении fps адски падает с 2к до 30.. и Profiller говорит что это Physics.simulate(Хавает 98.8% :D). Я двигаю персонажа через MoveToward и как понял это ресурсозатратно(Хотя мб я ошибаюсь ,но в инете пишет что это из-за MoveToward).Как это можно исправить?.Мб другой способ движения?Или ещё какойнить вариант оптимизации
Сообщение отредактировал Valik_Fenko - Понедельник, 30 Мая 2016, 10:29 |
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 11:14 | Сообщение # 24 |
старожил
Сейчас нет на сайте
| Valik_Fenko, всегда использовал MoveTowards и проблем с ним не замечал. Явно не в этом дело, тем более для одного объекта. Попробуй ради интереса сделать коллайдер триггером на юните и посмотреть, будут ли лаги.
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 11:22 | Сообщение # 25 |
почетный гость
Сейчас нет на сайте
| +++
Во,я убрал колайдер с игрока ваще,но ведь он мне в будущем может понадобится какбе =( Например у меня волновой поиск пути для 3d игры,есть просто какбы сетка и он по ней движется,а как сделать чтоб z персонажа всегда была над определёнными обьектами(terrain,мосты,подьемы и тому подобное).Это единсвенное помоему зачем мне нужен будет колайдер.Например чтоб юниты не проходили сквозь друг друга я буду делать клеточку непроходимой в момент шага(Тут колайдер не нужен).В общем вопрос щас заключается в том как сделать чтоб юнит всегда ходил по земле =) без колайдера и возможно ли это
Добавлено (30 мая 2016, 11:22) --------------------------------------------- А я изначально думал что лаги из-за циклов на 10к и сделал так чтобы они срабатывали только 1 раз(когда считается путь).А это жрет всего 0.1% CPU :D.Хотя я с 0.3 до 0.1 опустил.в 3 раза уменшил нагрузку
Сообщение отредактировал Valik_Fenko - Понедельник, 30 Мая 2016, 11:24 |
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 11:31 | Сообщение # 26 |
старожил
Сейчас нет на сайте
| Valik_Fenko, конечно возможно. Пускаешь вниз объекта луч (Physics.Raycast), с out hit(RaycastHit). Потом считываешь hit.point, берёшь там координату по высоте и задаёшь её игроку +N (N - высота над землёй, на которой будет "парить" твой объект). Как-то так:
Код if (Physics.Raycast(transform.position,-transform.up, out hit)) { if (hit.collider!=null) { transform.position=new Vector3(transform.position.x, hit.point.y+0.25f, transform.position.z); } }
Код, конечно, лютый, но это так, для примера.
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 11:48 | Сообщение # 27 |
почетный гость
Сейчас нет на сайте
| А лагать не сильно будет если луч так часто делать?Юнитов то дохера в рпг
|
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 12:07 | Сообщение # 28 |
старожил
Сейчас нет на сайте
| Valik_Fenko, дохера - это сколько? К тому же можно это проверять при смене квадрата, и записывать новый Y в переменную, а юнита просто потом поднимать через тот же position или MoveTowards.
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 12:08 | Сообщение # 29 |
почетный гость
Сейчас нет на сайте
| Хммм.Чет не работает этот код.Странно :/
|
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 12:12 | Сообщение # 30 |
старожил
Сейчас нет на сайте
| Valik_Fenko, как он не работает? Для hit нужно заранее объявить переменную
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 12:14 | Сообщение # 31 |
почетный гость
Сейчас нет на сайте
| Я знаю =)
Добавлено (30 мая 2016, 12:14) --------------------------------------------- Вот я малость переделал под себя if(Physics.Raycast(transform.position,-transform.up, out hit)) { if(hit.collider!=null) { transform.position = Vector3.MoveTowards(t_pos,new Vector3(Path[step_].x,hit.point.y+0.5f,Path[step_].z),5f*Time.deltaTime); } } Я поставил куб короче с колайдером ,но он по нему не ходил,и вот ещё. после Move Добавил такое Debug.Log(hit.point.y);
Вот пишет в консоль но высота всегда 0,005
Сообщение отредактировал Valik_Fenko - Понедельник, 30 Мая 2016, 12:23 |
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 12:25 | Сообщение # 32 |
старожил
Сейчас нет на сайте
| Valik_Fenko, двигается он мб из-за твоего другого кода.
Попробуй замени на это:
Код if(Physics.Raycast(transform.position,-Vector3.up, out hit,1000)) {
Долгожданный анонсик: State of War
Сообщение отредактировал EchoIT - Понедельник, 30 Мая 2016, 12:25 |
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 12:31 | Сообщение # 33 |
почетный гость
Сейчас нет на сайте
| Кубики тоже колайдеры,но на них слой Ignore Raycast.Так что проблема в этом коде щас буду тестить
Добавлено (30 мая 2016, 12:31) --------------------------------------------- Debug.Log(hit.collider.name); Мне всегда пише что это террайн даже если юнит стоит в кубе(мосте в будущем или чет ещё в таком духе )
Сообщение отредактировал Valik_Fenko - Понедельник, 30 Мая 2016, 12:37 |
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 12:38 | Сообщение # 34 |
старожил
Сейчас нет на сайте
| Valik_Fenko, если он стоит в чём-то, то луч не будет цеплять этот коллайдер, насколько я знаю. Он должен стоять сверху. Можно пускать луч выше самого юнита, если он в Ignore Raycast, т.е. так:
Код if (Physics.Raycast(transform.position+transform.up, -transform.up, out hit)) {
Долгожданный анонсик: State of War
|
|
| |
Valik_Fenko | Дата: Понедельник, 30 Мая 2016, 12:46 | Сообщение # 35 |
почетный гость
Сейчас нет на сайте
| угу,а ещё нид в алгоритме сравнивать ток x и z (x и y если по нормальному) А высоту отдельно устанавливать
Добавлено (30 мая 2016, 12:42) --------------------------------------------- Ну вот.с 30 фпс сделали 2500 Добавлено (30 мая 2016, 12:45) --------------------------------------------- слуш как с тобой связатся можно кроме форума?мб скайп или вк(регаться нид ыы),а то таким 5-минутных вопросов много,а ответов мало =(. Добавлено (30 мая 2016, 12:46) --------------------------------------------- Блин с каждым днем моя игра всё больше и больше смахивает на 3 варик :d.Редактор террейна более продвинутый и в тоже время до жути похож на варкрафтовский : D
Сообщение отредактировал Valik_Fenko - Понедельник, 30 Мая 2016, 12:44 |
|
| |
EchoIT | Дата: Понедельник, 30 Мая 2016, 13:07 | Сообщение # 36 |
старожил
Сейчас нет на сайте
| Valik_Fenko, да я тебя добавил в скайпе. ЛС читай) Или уведомления не было на GCUP? (а то у меня они отвалились почему-то и я больше не вижу, что мне пришло новое сообщение)
Долгожданный анонсик: State of War
|
|
| |