ситуация следующая - делается поиск пути, точка А ищет путь к точке В, для этого она вычисляет изначальное направление, к примеру точка А находится вверху слева а точка В находится внизу справа, соответственно получается вектор (1f, 0 -1f). если же эта точка недоступна (перекрыта каким-то препятствием) то нужно искать другие направления, и конечно же лучше искать оптимальные, то есть в данной ситуации от нынешнего направления нужно по вернуть на 45 градусов потом -45, далее 90 и -90 и т.д. подскажите каким образом это осуществить? я пробовал так
waruiyume писал(а):Если уж и так захардкодили, то захардкодили бы направления.
не ну можно конечно и статически под все варианты написать, только около 100 строчек будет... я вот и интересуюсь как данную задачу решить наиболее простым способом, думаю такое решение есть, только я еще на него не наткнулся...
А откуда ты взял этот код? Может ты его не правильно подстроил. Или это твой код, просто непонятна логика кода и он не полный еще, что в итоге то он делает?
Поэтому непонятно как ты позицию с поворотом складываешь? Или searchPoint, pointStart это повороты? Ну и дальше какая логика? Почему скрипт обрезан? Что он делает вобще?
Alkos26Rus писал(а):А откуда ты взял этот код? Может ты его не правильно подстроил. Или это твой код, просто непонятна логика кода и он не полный еще, что в итоге то он делает?
Поэтому непонятно как ты позицию с поворотом складываешь? Или searchPoint, pointStart это повороты? Ну и дальше какая логика? Почему скрипт обрезан? Что он делает вобще?
1. логика скрипта - поиск кратчайшего пути, если путь недоступен то следующий кратчайший... 2. по форумам копался и наткнулся на пример поворота направления, плюс своё нахимичил. (да нерабочее, да бредово, откинул эту идею...) 3. ++i а не i++, я так всегда делаю, по этому поводу читал дискуссии - мол ++i быстрее выполняется, вот я так всегда и делаю, но это мелочи, микросекунды и т.д., просто привычка... 4. задачу в итоге решил путём закидывания в словарь направления и дистанции до цели, далее сортировка, полученный результат - нужная последовательность направлений.
Често говоря до этого не использовал ++i, но посмотрел информацию и там все объясняется. ++i выдает значение после изменения, а i++ выдает перед изменением, поэтому и медленнее т.к временная переменная создается. Поэтому и в случае когда мы берем i для ссылки на элемент(ArrayDirRot[i]), то нужно пользовать i++, иначе перебор будет не с начала. Надо конечно проверить, но сомневаюсь что будет одинаково.
С ++i таки лохонулся, я почему-то всегда думал, что последняя инструкция в for выполняется после итерации. Результат, о котором я говорил действительно может быть, если написать так "for (int i = 0; ++i < 10;)", но обычно так не делают.
Zimaell писал(а):ситуация следующая - делается поиск пути, точка А ищет путь к точке В, для этого она вычисляет изначальное направление, к примеру точка А находится вверху слева а точка В находится внизу справа, соответственно получается вектор (1f, 0 -1f). если же эта точка недоступна (перекрыта каким-то препятствием) то нужно искать другие направления, и конечно же лучше искать оптимальные, то есть в данной ситуации от нынешнего направления нужно по вернуть на 45 градусов потом -45, далее 90 и -90 и т.д. подскажите каким образом это осуществить? я пробовал так
но это не работает, даже не пойму как оно "крутит"...
Привет! Я вижу, что у тебя есть проблема с определением направлений при поиске оптимального пути. Могу помочь разобраться.
В коде, который ты предоставил, используется массив кватернионов ArrayDirRot, чтобы определить восемь возможных направлений. Затем происходит итерация по этому массиву, и каждое направление поворачивается относительно начального направления dir. Однако, есть несколько проблем в твоем коде.
В строке Vector3 dir = new Vector(1f, 0 -1f); у тебя ошибка в конструкторе Vector. Он должен быть Vector3, а не Vector.
Неправильное вычисление нового направления. Вместо этого код выполняет поворот текущего направления на определенный угол. Для правильного вычисления нового направления нужно использовать единичные векторы (например, Vector3.forward, Vector3.right, Vector3.up) и поворачивать их с помощью кватернионов.
Вот исправленный код, который должен работать для поиска оптимальных направлений:
Если чо, это ChatGPT ответил. Используй его, если найдешь с ним общий язык, форум тебе больше не нужен
думаю это самый полезный совет... нет я конечно слышал неоднократно о нём, но не думал что он и коды легко так пишет, проверил.... и да, если правильно поставить вопрос то даёт то что нужно. всё поражаюсь до чего дошло человечество, гениально, поражает, но в то же время и пугает.... еще раз спасибо...
Если чо, это ChatGPT ответил. Используй его, если найдешь с ним общий язык, форум тебе больше не нужен
думаю это самый полезный совет... нет я конечно слышал неоднократно о нём, но не думал что он и коды легко так пишет, проверил.... и да, если правильно поставить вопрос то даёт то что нужно. всё поражаюсь до чего дошло человечество, гениально, поражает, но в то же время и пугает.... еще раз спасибо...
Он хорошо пишет код если ты сам понимаешь что он тебе по итогу выдает, потому что он не может читать твои мысли а ты в тексте не всегда можешь ему четко их сформулировать. По этому приходится договариваться. В остальном, это очень крутой помощник заменяющий гугл и любые другие форумы, экономит тонну времени. Вчера я например шейдеры с ним вместе писал, все получилось, хотя я в шейдерах практически нулёвый, но бот не подвел. Сегодня например создавали с ним генерацию кода из рантайма для сборки юнити, тоже все получилось, хоть и головняк сильный был с Mono.Cecil.
Saltant писал(а):Он хорошо пишет код если ты сам понимаешь что он тебе по итогу выдает, потому что он не может читать твои мысли а ты в тексте не всегда можешь ему четко их сформулировать. По этому приходится договариваться. В остальном, это очень крутой помощник заменяющий гугл и любые другие форумы, экономит тонну времени. Вчера я например шейдеры с ним вместе писал, все получилось, хотя я в шейдерах практически нулёвый, но бот не подвел. Сегодня например создавали с ним генерацию кода из рантайма для сборки юнити, тоже все получилось, хоть и головняк сильный был с Mono.Cecil.
из того что я уже с ним потестил могу сказать следующее - он меня лучше понимает чем многие на форумах какие-бы вопросы не задавал, всё отвечает с первого раза и расписывает до деталей. Жалею только что я раньше не начал ним пользоваться, реально полезная штука, просто думал что этот чат как миджорни и дипфек, так для развекухи, хотя мид сейчас тоже уже используют профи, да и в фотошопе нейрики уже творят чудеса, в общем правильной дорогой идёт товарищи
Zimaell писал(а):...просто думал что это так для развекухи
Дада для развлекухи, так сильно развлекаются что пропали все адекватные вакансии на джуниор программистов Порог входа в профессию повысился ощутимо. Те кто не сможет адаптироваться, пойдет работать на завод, за станок.