Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unreal Engine 5. get mouse position. координаты.

NeVsegda Trezvii Профи (879), закрыт 2 недели назад
Кароче, пытался сделать поворот камерой при помощи зажимания пкм как в wow или l2, но get mouse position выдаёт float, а set mouse position принимает чисто int. приходится использовать truncate. Из-за этого курсор кидается вообще не на те координаты на которые должен был(должен был на месте остаться).
Дополнен 2 недели назад
Лучший ответ
Xttx Мыслитель (8563) 2 недели назад
Либо я вообще не понял что ты хочешь, либо ты, ну, прям ОЧЕНЬ сильно перемудрил.
Для поворота камеры с зажатой правой мышкой, как в wow / la2, зачем тебе понадобился SetCursorPosition? Эта нода, для физического перемещения курсора в координаты, а для поворота камеры - курсор вообще не нужен. Нужно слушать эвент управления движения мышкой (можешь посмотреть как это сделано в FPS/TPS темплейтах), и просто добавить туда бранч, с условием "если зажата кнопка мыши" (нода isInputKeyDown, вытягивается из playerController, в ноде нужно в качестве кнопки указать Right Mouse Button). И всё, больше ничего не надо делать.
NeVsegda TrezviiПрофи (879) 2 недели назад
Проблема в том, что курсор будет постоянно использоваться в игре, и хотелось бы, что-бы при повороте камерой, он не улетал в край экрана. Можно ли как-то конкретно на время зажатия пкм зафиксировать курсор или снизить его скорость в 0?
NeVsegda Trezvii Профи (879) NeVsegda Trezvii, хотя скорее всего, в таком случае не будет происходить поворот камерой
XttxМыслитель (8563) 2 недели назад
Можно. Примерно так, как ты и сделал. Только ты сохраняешь координаты из ноды GetMousePositionOnViewport, которая возвращает нормализованные координаты (от 0 до 1), а устанавливаешь через SetMousePosition, которая ожидает координаты в пикселях (в пространстве текущего разрешения экрана). Замени GetMousePositionOnViewport на просто GetMousePosition, вытягивается из контроллера. Никакие касты, булевы переменные и что там ещё (на верхнем скрине невозможно разобрать) - это всё не нужно.
XttxМыслитель (8563) 2 недели назад
*Последнее предложение выше просто проигнорь. Только сейчас дошло что тот кусок для другого. Просто на верхнем скрине не реально что то понять, а на нижнем этого куска не было.
NeVsegda TrezviiПрофи (879) 2 недели назад
В общем, если я ставлю на бранч IsInputKeyDown и втыкаю туда пкм, он делает это, но сам ивент right mouse button теперь полность игнорит, и, как следствие, не возвращает курсор на место. Я попытался впихнуть весь код с ивента right mosue button на сам код инпута, но он полностью игнорится. И прости, если я тебя уже достал.
NeVsegda Trezvii Профи (879) NeVsegda Trezvii, я месяц назад начал изучать анрил пятый, а уже его ненавижу
XttxМыслитель (8563) 2 недели назад
Да нет же, не надо ставить бранч IsInputKeyDown в эвент right mouse button, его надо либо в тик либо в InputAction (в зависимости от того, как у тебя камера поворачивается). Когда я изначально писал ответ, я писал ответ на вопрос "как крутить камеру с зажатой правой кнопкой" (так у тебя в вопросе написано). А "как возвращать курсор на место" - я написал уже в комментарии. Это две независимые ветки, не надо их смешивать :). В общем, выложи скриншот того что у тебя сейчас есть на повортот камеры _И_ на возвращение курсора. (и желательно, что б там можно было хотя бы название нод прочитать)
NeVsegda Trezvii Профи (879) Xttx, Я имел ввиду, что IsInputKeyDown проверяет нажат ли пкм. Но в любом случае, я через евент тик что-то намудрил, и это работает. Спасибо за помощь.
Остальные ответы
sasha buybuz Мастер (2192) 2 недели назад
ох спагете
NeVsegda TrezviiПрофи (879) 2 недели назад
Меня всё устраивает, а вас это не коснётся.
sasha buybuz Мастер (2192) NeVsegda Trezvii, я не в обиду если что просто мне весьма трудно в этом разбираться потому что я еще новичок если что простите
Похожие вопросы