Как фоново обрабатывать физику?

Задача у меня стоит следующая - поиск пути по неизвестной 3D местности, сам код я уже сделал и проверил, всё работает, коротко принцип такой

public List<Vector3> GetRoute(Vector3 start, Vector3 target){
List<Vector3> Route = new List<Vector3>();
....
while(true){
    // логика поиска следующего шага
    // проверка с помощью Physics.CheckBox и Physics.BoxCast возможности ступить на следующую клетку
    // если да то записываем шаг и пробуем дальше пройти, или записываем что нельзя и подбираем другое направление
    }
// логика вычисления "кратчайшего пути" с помощью AStar
return Route;
}


проблема в том что он может обрабатываться как 0.01 сек так и 0.3 сек, последнее конечно далеко не влазит в кадр и вызовет фриз.

Вопрос - как сие чудо распараллелить, запустить фоново, в несколько потоков, в общем как выполнить эту задачу не заморозив основной поток?

Как я понял использовать Job не получится так как Physics работают только в основном потоке (как я понял), корутины тоже нет смысла использовать, всё равно обработки физики только в основном потоке и с таким же успехом можно прерывать цикл на какой-то итерации и продолжать в следующем кадре, переход на ECS конечно не обсуждается так как это всё вообще нужно переделывать полностью...

в общем - какие есть варианты, в какую сторону копать, что лучше использовать, как этим бороться?
  • Вопрос задан
  • 224 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы