Форум программистов, компьютерный форум, киберфорум
Игровые движки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428

GODOT 4.2 Обход препятствий 2D

19.08.2024, 10:17. Показов 9002. Ответов 106
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короче у меня через тайлы с колижаном почему то и моб и игрок
проходят по оси X, а по Y вроде всё нормально
И моб как бы прилипает к тайлам, на которых коллизия повешена
Ктото может это исправить ?

сам проект 2d Navigator.zip
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2024, 10:17
Ответы с готовыми решениями:

Обход препятствий
Вообщем то, есть полигон заданный набором вершин, внутри него есть такие же полигоны - препятствия. Как можно расчитать путь? Есть...

Обход препятствий
Здравствуйте, пишу курсовой проект, возникла одна проблема. При нахождении препятствия движение останавливается(пока), нужно сделать так,...

обход препятствий
Здравствуйте, передо мной стоит следующая задача. Есть алгоритм муравья, реализованный на Visual C++ 6.0. Алгоритм находит кратчайшее...

106
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
23.08.2024, 22:36
Студворк — интернет-сервис помощи студентам
Mr_den, сейчас что-то набросаю, не переживай
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
23.08.2024, 23:07  [ТС]
Royal_X, твоего кода уже 1200 чел ждёт
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
23.08.2024, 23:16
Mr_den, типа так

Вложения
Тип файла: zip 2d Navigator.zip (62.5 Кб, 9 просмотров)
1
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
23.08.2024, 23:26  [ТС]
Круто !
Ты можешь сказать в чем различие 2d_Nav_1.zip работает камера нормально
и ТОТ ЖЕ КОД но камера глючит 2d_Nav_2.zip
В чём отличие ? Где ошибка ?
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
23.08.2024, 23:33  [ТС]
Да, вот даже если к твоему проекту камеру добавить то будет бред полный. А я пробовал с маркера брать
локальные координаты - мне ошибки выдает
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
23.08.2024, 23:33
Цитата Сообщение от Mr_den Посмотреть сообщение
Где ошибка ?
там много ошибок и не только в коде, причем, как в первом проекте, так и во втором...глючит почти всё
По-моему, ты не пытаешься понять коды, которые я тут тебе пишу. В этих проектах повторяются те же ошибки, о которых я уже говорил и которые исправлял.
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
23.08.2024, 23:38  [ТС]
Да но в первом камера работает, а во втором нет, а у тебя камеры вообще нет

Добавлено через 2 минуты
йа хочу тругольник заменить спрайтами со встроенным коллижаном, это намного удобнее, но я пока не врубился до конца как это делатьч, поэтому убрал канвас.
Наверно со слоями лаерами чтото накрутил
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
23.08.2024, 23:39
Цитата Сообщение от Mr_den Посмотреть сообщение
Да но в первом камера работает, а во втором нет
я открыл оба проекта, камера и там и там работает одинаково. Не понимаю, что ты подразумеваешь под "не работает"...
Цитата Сообщение от Mr_den Посмотреть сообщение
а у тебя камеры вообще нет
потому что ты про камеру тогда не говорил, а я вот и написал код на основе той единственной версии проекта, что ты ранее выложил. И у тебя там не было камеры.
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
23.08.2024, 23:42  [ТС]
Проблема в том, что при подключении камеры, клик идет в другое место со смещением от курсора.
А в проекте 1 чтото нажал что такой проблемы не стало - а что нажал не могу понять ))
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
23.08.2024, 23:47
Лучший ответ Сообщение было отмечено Mr_den как решение

Решение

Цитата Сообщение от Mr_den Посмотреть сообщение
Проблема в том, что при подключении камеры, клик идет в другое место со смещением от курсора.
потому что координаты клика вычисляются относительно вьюпорта, а он двигается

замени 14 строку main.gd на

Python
1
marker.global_position = get_global_mouse_position()
1
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 09:29  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
относительно вьюпорта
Да, точно - работает Спасибо !
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 11:18  [ТС]
Python
1
 last_arrow.visible = false
лучше невидимой поставить, так как там маркер должен стоять
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
24.08.2024, 11:26
Цитата Сообщение от Mr_den Посмотреть сообщение
лучше невидимой поставить, так как там маркер должен стоять
если не нужна последняя стрелка, то не создавай ее вообще: удали последние 6 строк из кода (строки 54-59).

Mr_den, и еще, я забыл тебя предупредить, что константу 40 в коде можешь менять, она отвечает за плотность стрелочек. Меняй, если не устраивает текущая плотность или если будешь использовать другой спрайт...
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 11:30  [ТС]
Royal_X, ты привязал arrow к "CanvasLayer", а она идет из игрока. Что теперь с камерой делать
там всё разлетелось в 3 стороны игрок маркер и стрелы
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
24.08.2024, 11:39
Цитата Сообщение от Mr_den Посмотреть сообщение
ты привязал arrow к "CanvasLayer", а она идет из игрока.
Я сделал правильно. Не нужно привязывать стрелки к игроку, они с ним не связаны. А вот CanvasLayer хорош тем, что позволяет настраивать индексы слоев. Собсна, это его главная функция. Дабы стрелочки не заслоняли паука, я разместил его в CanvasLayer.
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 11:40  [ТС]
тогда надо было и игрока в
Цитата Сообщение от Royal_X Посмотреть сообщение
"CanvasLayer"
запихивать ? Шоб камера работала нормально ?
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
24.08.2024, 11:41
Mr_den, что не так с камерой? выложи проект, посмотрю
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 11:44  [ТС]
Там всё на 3 стороны разлетается 2d Navigator (4).zip\

Начальные координаты стрелочек не совпадают с координатой игрока
Наверно проблема в том, что начальный вектор это direction, а ты его не использовал
0
 Аватар для Mr_den
12 / 10 / 2
Регистрация: 06.09.2022
Сообщений: 428
24.08.2024, 12:13  [ТС]
Надо как то direction к камере привязать по другому

Добавлено через 16 минут
to_local преобразует глобальную позицию в позицию в локальной системе координат узла, то есть она будет относительно исходной точки узла, в то время как координаты маркера остаются в global_position
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
24.08.2024, 12:33
Mr_den, нет, там проблема в другом. Стрелочки нужно добавить к ноду, чьи координаты не будут меняться. CanvasLayer в таком виде больше не подходит. Поэтому можно добавить стрелочки к Main.
Нужно всего лишь заменить три строки, т.е. убрать привязку к CanvasLayer, и привязать к Main
Python
1
2
3
get_parent().add_child(new_arrow)
get_parent().add_child(intermediate_arrow)
get_parent().add_child(last_arrow)
Добавлено через 9 минут
Mr_den, вот так выглядит

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
func _on_navigation_agent_2d_path_changed() -> void:
    var points = nav_agent.get_current_navigation_path()
    for i in range(points.size() - 1):
        var point : Vector2 = points[i]
        var new_arrow : Sprite2D = arrow.instantiate()
        new_arrow.add_to_group("arrows")
        new_arrow.position = point
        var direction = 0.0
        direction = point.angle_to_point(points[i+1])
        new_arrow.rotation = direction
        new_arrow.z_index = -1
        get_parent().add_child(new_arrow)
        var k = floor(point.distance_to(points[i + 1]) / 45.0)
        for j in range(k - 1):
            var intermediate_point : Vector2 = point.lerp(points[i + 1], (j + 1.0) / k)
            var intermediate_arrow : Sprite2D = arrow.instantiate()
            intermediate_arrow.add_to_group("arrows")
            intermediate_arrow.position = intermediate_point
            intermediate_arrow.rotation = direction
            intermediate_arrow.z_index = -1
            get_parent().add_child(intermediate_arrow)
    #var last_point : Vector2 = points[points.size() - 1]
    #var last_arrow : Sprite2D = arrow.instantiate()
    #last_arrow.add_to_group("arrows")
    #last_arrow.position = last_point
    #last_arrow.rotation = points[points.size() - 2].angle_to_point(last_point)
    #last_arrow.z_index = -1
    #get_parent().add_child(last_arrow)
Добавлено через 58 секунд
Mr_den, я добавил к стрелочкам z_index, чтобы паук был над стрелочками, а не под. Но с этими индексами ты потом сам разберешься и выставишь правильные значения для каждого из объектов: маркера, треугольника, канваса, кнопки и т.д. Когда объекты добавляются на сцену, то они заслоняют те, что были раньше на сцене. Это особенность дерева нодов в годот. Чтобы контролировать их порядок есть z_index. Он на вкладке Ordering.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2024, 12:33

Обход препятствий в раннере
Объект(Игрок) двигается по прямой, и я не могу сделать так что бы когда перед ним появляется препятствие(с тэгом "trafficCar" и...

Бесконечный обход препятствий
Приветствую, друзья! Скажу сразу, что сложные алгоритмы A* и ему подобные мне даются крайне тяжело. Точнее вообще не даются.:( Суть...

Обход препятствий стаей
Суть задачи заключается в том, что нужно децентрализовано обходить препятствия стаей из 5-6 (для начала) объектов. Всё движение происходит...

Как сделать обход препятствий?
Как сделать обход препятствий в С++ Builder??? Движение игрока по клику мыши уже готово. Вот мой код: void __fastcall...

Как сделать обход препятствий на Java?
Как сделать обход препятствий на Java?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru