|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
Использование мыши для прицела в 3д игре на GODOT17.05.2022, 19:53. Показов 2447. Ответов 7
Метки нет (Все метки)
Как можно получить 3д координаты мыши? Или как ещё можно использовать мышь, для прицеливания в GODOT в 3д играх?
Я делаю игру, в которой требуется возможность, перемещая мышь по экрану, не перемещая камеру и всего игрока, понять, куда эта мышь направленна. Но ничего не получается. Как вообще подобную задачу обычно решают?
0
|
|
| 17.05.2022, 19:53 | |
|
Ответы с готовыми решениями:
7
Плавает курсор мыши. Задержка мыши при игре в шутеры (игры) Правда ли, что Unreal - для профессионалов, Unity - для масс, а Godot - для самых отсталых?
|
|
6107 / 2802 / 1038
Регистрация: 01.06.2021
Сообщений: 10,231
|
||||||||
| 20.12.2023, 18:18 | ||||||||
|
Сперва вы прописываете
Как же тогда делают прицел, вы спросите? Очень просто. С центра камеры (которая расположена в голове персонажа) испускается луч (RayCast). Т.е. родителем луча является Камера. RayCast можно создать без кода. Далее для параметра cast_to прописываете Vector3, которые отвечает за дальность выстрела. А потом во время выстрела луч просто проверяет попал ли он на тот или иной объект по маске. Как по мне, RayCast самый удобный для прицела. Имею в виду, функции этого класса. Но описанный выше способ для реализации прицела не единственный. Можно использовать и другие трюки.
0
|
||||||||
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 20.12.2023, 18:38 [ТС] | |
|
Royal_X, мне требуется, помимо фиксирования центра экрана для наведения, как вы написали, дополнительно наводится мышью на другие объекты вне центра экрана.
Нет, конечно можно просто создать ещё один луч и управлять им с помощью мыши, но суть проблемы это не меняет. Я понимаю как получить точку пересечения плоскости и луча, или как направить луч в определенную точку на плоскости, но откуда мне взять плоскость, на которую проецируется картинка с камеры?
0
|
|
|
6107 / 2802 / 1038
Регистрация: 01.06.2021
Сообщений: 10,231
|
|
| 20.12.2023, 19:02 | |
|
-_human_-, не нужно придумывать свои велосипеды, изучайте документацию. RayCast содержит очень много полезных функций. Он позволяет найти точку соприкосновения, нормаль, определить объект, с которым коснулся луч и т.п. На форуме за вас никто не будет писать игру. Читайте матчасть. Я всего лишь, увидев ваш вопрос, решил предупредить, что курсор мыши для прицела не годится. Я создавал 3d игру - шутер, использовал RayCast. Причем, в точку столкновения (а не в центр объекта) я ещё передавал импульс. Выглядело очень реалистично и очень похоже на настоящий выстрел.
0
|
|
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 20.12.2023, 20:54 [ТС] | |
|
Royal_X, прошу прощения, но пожалуйста, читайте вопрос прежде чем писать ответ. Я и так навожусь центром экрана с помощью лучей. Мне нужно с помощью мыши, именно мышью, дополнительно выбирать объекты на экране вне центра экрана.
Я не прошу писать игру за меня, я задаю вопрос по реализации в конкретном движке - godot, поскольку, предоставляя как это сделать в теории, не нашел как реализовать в конкретном движке. Как в этом игровом движке получить плоскость, на которую движок проецирует картинку или как получить луч, являющийся продолжением курсора мыши из центра камеры, если картинка проецируется не на плоскость? Ещё раз, я спрашиваю как это реализовать в GODOT, поскольку не нашел инфы об этом в документации. Был бы благодарен ссылке на страницу в документации, где об этом было бы написано.
0
|
|
|
6107 / 2802 / 1038
Регистрация: 01.06.2021
Сообщений: 10,231
|
|
| 20.12.2023, 21:34 | |
|
-_human_-, я даже не представляю, как выглядит ваша игра. Как можно что-то выбирать мышью на экране, если мышь обычно в 3d играх вращает камеру? Т.е. игра в режиме заблокированного курсора в центре экрана. Обычно, если что-то и подбирают в 3d играх, то делают это с помощью центральной точки экрана, с того же прицела (например, как в Half-Life 2). Т.е. персонаж поворачивает голову (камеру) так, чтобы объект попал в центр экрана и если объект находится на определенном расстоянии, то предмет подбирается.
0
|
|
|
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
|
|
| 20.12.2023, 21:47 [ТС] | |
|
Royal_X, управление полностью с клавиатуры, игрок управляет космичемким истребителем, и мышь там в принципе не нужна. Мышью игрок должен выделять интересующие его объекты, чтобы получить по ним информацию.
В этом и проблема - игрок видит астероид, наводит на него мышь, но как мне получить луч от камеры до мыши на экране, чтобы узнать, на что указывает игрок? В идеале, мышь - просто точка на прямоугольнике, на который проецируется картинка, и тогда задача простая. Но графика не всегда проецируется на прямоугольник, плюс я не знаю где лежит описание плоскости, на которую проецируется. По идее должен быть какой-то более-менее встроенный метод, но я не смог его найти, то что находилось, работало некорректно. П.с. вообще, на данный момент проект заморожен из-за нехватки времени на его разработку, поэтому вопрос не очень актуален, но было бы интересно узнать, как же все-таки это делается. Добавлено через 3 минуты Я даже делал костыль, сделав самонаведение ракет (одно из назначений мыши - выделять цель для атаки) на ближайшую к центру экрана цель, а не по указателю мыши, но из-за этого сильно страдала скорость наведения - корабль разворачивается не мгновенно, а ракетам должно быть по барабану из какой позиции запускаться, поэтому это не дело
0
|
|
|
6107 / 2802 / 1038
Регистрация: 01.06.2021
Сообщений: 10,231
|
||||||
| 20.12.2023, 21:57 | ||||||
|
-_human_-, вот, нашел такой код в инете. Придется разбирать и реализовать что-то похожее. Я когда-то делал создание луча по позиции курсора от камеры, но я свой код не нашел. Но он был похож на этот код, который нашел в интернете. Сейчас пишу с телефона, даже проверить не могу. Но скажу одно: Godot располагает всеми встроенными функциями для данной задачи. Это точная инфа, т.к. я такое реализовал. Т.е. не нужно вам ничего придумывать и решать сложные задачи из линейной алгебры и аналитической геометрии... Просто читайте документацию.
-_human_-, а вообще, для мыши вроде бы есть сигнал при наведении на collision объект. Уже давно не работал на Godot, не помню...
0
|
||||||
| 20.12.2023, 21:57 | |
|
Помогаю со студенческими работами здесь
8
Использование mouse_event для имитации клика мыши
Обработка мыши в игре Движение курсора мыши в игре Обработка событий мыши в игре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|