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

Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2019
Сообщения
75
Реакции[?]
81
Поинты[?]
0
Есть массив объектов(B,C,см.скрин)
Мне нужно как-то сравнить дистанцию от каждого объекта до A(см.скрин) и выбрать ближайший :/
Может есть у кого идеи?
Снимок экрана 2021-02-13 011721.png
 
Начинающий
Статус
Оффлайн
Регистрация
12 Янв 2021
Сообщения
21
Реакции[?]
5
Поинты[?]
0
BP или C++?

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

Если массив большой то нужно больше вводных.
 
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2019
Сообщения
75
Реакции[?]
81
Поинты[?]
0
BP или C++?

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

Если массив большой то нужно больше вводных.
BP,я изначально пытался сделать что-то подобное,но как-то не вышло
 
Покинул портал. Не писать.
Легенда форума
Статус
Оффлайн
Регистрация
1 Авг 2016
Сообщения
4,353
Реакции[?]
5,674
Поинты[?]
175K
BP,я изначально пытался сделать что-то подобное,но как-то не вышло
Можешь посмотреть как реализован поиск ближайшей двери через ключ (bp_master_key вроде) в first person story adventure. Думаю поможет.
 
Начинающий
Статус
Оффлайн
Регистрация
27 Сен 2020
Сообщения
80
Реакции[?]
10
Поинты[?]
0
Мне нужно как-то сравнить дистанцию от каждого объекта до A(см.скрин) и выбрать ближайший :/
Может есть у кого идеи?
Если это для AI, то EQS это то, что тебе нужно.
Если нет, то делаешь for each loop для каждого элемента массива, и для каждого берешь дистанцию до маленького кубика. Сохраняешь ее в вариабле и актера тоже сохраняешь. Дальше сравниваешь каждую новую дистанцию с уже сохраненной. Если меньше - то заменяешь на новую и актера заменяешь на нового. Если больше, то ничего не делаешь. Так получаешь наименьшую дистанцию и актера с ней.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
18 Фев 2021
Сообщения
16
Реакции[?]
1
Поинты[?]
0
Как вариант, в блупринте сделать спавн сферы вокруг объекта. Нода, которая за это отвечает называется MultiSphereTraceForObjects - она спавнет сферу и возвращает массив объектов с которыми она пересеклась, потом пройдя по этому массиву в цикле, можно посмотреть дистанцию до каждого и найти самый ближний. Я таким образом делал боевку, чтобы персонаж притягивался к ближайшему противнику.
 

Вложения

Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2019
Сообщения
75
Реакции[?]
81
Поинты[?]
0
Как вариант, в блупринте сделать спавн сферы вокруг объекта. Нода, которая за это отвечает называется MultiSphereTraceForObjects - она спавнет сферу и возвращает массив объектов с которыми она пересеклась, потом пройдя по этому массиву в цикле, можно посмотреть дистанцию до каждого и найти самый ближний. Я таким образом делал боевку, чтобы персонаж притягивался к ближайшему противнику.
Вопрос уже решен
 
Похожие темы
Сверху Снизу