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

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

3 ответов

39 просмотров

Исправил Сам не делал, но вот в теории - делаем виджет с нужной нам рамкой размером 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+- Автор вопроса

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

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

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
12
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Как думаете через какой сервис они верифицируют?
inc.
5
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта