Какой элемент нужно рассмотреть чтобы мышкой можно было рисовать прямоугольные

области по экрану? Думаю как реализовать прямоугольное выделение объектов на сцене, подскажите пожалуйста

3 ответов

22 просмотра

Исправил Сам не делал, но вот в теории - делаем виджет с нужной нам рамкой размером 100*100. У всех виджетов насколько мне известно, bounds всегда прямоугольник. Также если этот виджет спавнится прямо во viewport, то его точкой 0.0 будет левый верхний угол. При клике выводишь этот виджет на экран и ставишь ему set size на его size/100, set position от get mouse position on viewport. В тике этого виджета прибавляем к его set size значение от (get input mouse delta x и y / 100) соответственно. Таким образом мы получили сам виджет выделения. Теперь нам нужно спроецировать его в игру. Для этого нам нужен актор с box collision, для него нужно найти location, rotation и bounds extent. Rotation ставим от world rotation камеры. Чтобы найти центр нашего выделения, нужно вычесть/прибавить (в зависимости от направления выделения относительно изначальной точки клика) из position виджета его absolutesize/2. Из этой точки через convert screen location to world space получаем location для куба. Bounds extend куба - та ось, что является forward вектором (х или y не помню) - ее делаем максимально длинной, чтобы цепляла на любом расстоянии от камеры). Боковая ось - зная центр виджета на вьюпорте, находим центральную точку на боковом ребре виджета, прибавляя к центру виджета его absolute size.x/2. Полученную точку также convert to world space. Теперь находим distance между центром куба и полученной точкой в 3д пространстве. Эта дистанция - наш bound extend боковой оси. Ось z куба - то же самое, но берем y виджета. После применения этих значений вызываем проверку на оверлап. Чтобы не оверлапить то, чего в кадре нет, можно использовать вшитую в актор булевую wasrecentlyrendered. Повторюсь, сам не делал, все в теории. Возможно, можно как то проще.

Либо вот урок https://youtu.be/-09V8Aq8SX4?si=LNRjJB8Tz7TJj3Zx

Blackcoat+- Автор вопроса

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

Обсуждают сегодня

Господа, а как такое в миграцию засунуть?
Денис Александрович
12
Гайз, кто-нибудь пробовал запустить probe-rs под камень, которого нет в probe-rs? Мб есть какой-нибудь пример у кого... Через target-gen попробовал сгенерировать chip-descript...
Максим Смирнов
2
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Какой максимальный размер caption у сообщений с фото? И учитываются ли в подсчете тэги форматирования? (<i>, <b>...)
Anton Shvets
4
Здравствуйте! Был старый сайт на octobercms v1. Виртуальная машина провайдера накрылась и сайт не работает. У меня остался zip архив с сайтом и база данных sql. Что я сделал н...
Il
1
Желаю получить совет от великих ботмейкеров которые успешно поднимали ботов на несколько тысяч одновременно активных юзеров Какая чушь нужна людям прямо сейчас, и что стоило ...
ռɛ ʋɛʀʍօʀɛ
6
Мне вот интересно jwt токен для подключения сторонего сайта к оду норм идея?
Andrij Moskivets
6
кто тебе сказал, что она угроблена? многие только начинают жизнь, после увольнения из Гугла, Майкрософта, Оракла,...
Alex Kom
9
Но если Евгений и Алекс используют в боевых условиях, то почему нет? А ты как-то про бизнес больше задвигаешь, это имеет к разработке отношение, но все же этим больше другие л...
Keiman
5
Карта сайта