• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Вопрос Определение ближайшего объекта

  • Автор темы Автор темы Nеon
  • Дата начала Дата начала
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2019
Сообщения
98
Реакции
82
Есть массив объектов(B,C,см.скрин)
Мне нужно как-то сравнить дистанцию от каждого объекта до A(см.скрин) и выбрать ближайший :/
Может есть у кого идеи?
Снимок экрана 2021-02-13 011721.png
 
BP или C++?

Если массив небольшой(<1000) то тупо в лоб сравнивай дистанцию до каждого и кешируй индекс самого ближнего - после завершения цикла это кешированое значение и будет твой ближайший обьект. Единственное, что можно оптимизировать в таком случае, это использовать Distance Squared - будет чуть быстрее.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Если массив большой то нужно больше вводных.
 
BP или C++?

Если массив небольшой(<1000) то тупо в лоб сравнивай дистанцию до каждого и кешируй индекс самого ближнего - после завершения цикла это кешированое значение и будет твой ближайший обьект. Единственное, что можно оптимизировать в таком случае, это использовать Distance Squared - будет чуть быстрее.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Если массив большой то нужно больше вводных.
BP,я изначально пытался сделать что-то подобное,но как-то не вышло
 
BP,я изначально пытался сделать что-то подобное,но как-то не вышло
Можешь посмотреть как реализован поиск ближайшей двери через ключ (bp_master_key вроде) в first person story adventure. Думаю поможет.
 
Мне нужно как-то сравнить дистанцию от каждого объекта до A(см.скрин) и выбрать ближайший :/
Может есть у кого идеи?
Если это для AI, то EQS это то, что тебе нужно.
Если нет, то делаешь for each loop для каждого элемента массива, и для каждого берешь дистанцию до маленького кубика. Сохраняешь ее в вариабле и актера тоже сохраняешь. Дальше сравниваешь каждую новую дистанцию с уже сохраненной. Если меньше - то заменяешь на новую и актера заменяешь на нового. Если больше, то ничего не делаешь. Так получаешь наименьшую дистанцию и актера с ней.
 
Последнее редактирование:
Как вариант, в блупринте сделать спавн сферы вокруг объекта. Нода, которая за это отвечает называется MultiSphereTraceForObjects - она спавнет сферу и возвращает массив объектов с которыми она пересеклась, потом пройдя по этому массиву в цикле, можно посмотреть дистанцию до каждого и найти самый ближний. Я таким образом делал боевку, чтобы персонаж притягивался к ближайшему противнику.
 

Вложения

  • фывфыв.PNG
    фывфыв.PNG
    38.3 KB · Просмотры: 6
Как вариант, в блупринте сделать спавн сферы вокруг объекта. Нода, которая за это отвечает называется MultiSphereTraceForObjects - она спавнет сферу и возвращает массив объектов с которыми она пересеклась, потом пройдя по этому массиву в цикле, можно посмотреть дистанцию до каждого и найти самый ближний. Я таким образом делал боевку, чтобы персонаж притягивался к ближайшему противнику.
Вопрос уже решен
 
Назад
Сверху Снизу