Четверг, 28 Марта 2024, 21:12

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Поиск пути (Проблема с передвижением по сетке)
Поиск пути
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);
}
}

Код, конечно, лютый, но это так, для примера. biggrin


Долгожданный анонсик: 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 нужно заранее объявить переменную
Код
RaycastHit 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);
Мне всегда пише что это террайн даже если юнит стоит в кубе(мосте в будущем или чет ещё в таком духе sad )


Сообщение отредактировал 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)) {


biggrin


Долгожданный анонсик: State of War
Valik_FenkoДата: Понедельник, 30 Мая 2016, 12:46 | Сообщение # 35
почетный гость
Сейчас нет на сайте
угу,а ещё нид в алгоритме сравнивать ток x и z (x и y если по нормальному)
А высоту отдельно устанавливать

Добавлено (30 мая 2016, 12:42)
---------------------------------------------
Ну вот.с 30 фпс сделали 2500 biggrin

Добавлено (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
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Поиск пути (Проблема с передвижением по сетке)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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