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

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

19.08.2024, 10:17. Показов 8440. Ответов 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
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6278 / 3002 / 1051
Регистрация: 01.06.2021
Сообщений: 11,228
23.08.2024, 22:36
Студворк — интернет-сервис помощи студентам
Mr_den, сейчас что-то набросаю, не переживай
0
 Аватар для Mr_den
11 / 9 / 2
Регистрация: 06.09.2022
Сообщений: 410
23.08.2024, 23:07  [ТС]
Royal_X, твоего кода уже 1200 чел ждёт
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6278 / 3002 / 1051
Регистрация: 01.06.2021
Сообщений: 11,228
23.08.2024, 23:16
Mr_den, типа так

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

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

Решение

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

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

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

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

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

Добавлено через 16 минут
to_local преобразует глобальную позицию в позицию в локальной системе координат узла, то есть она будет относительно исходной точки узла, в то время как координаты маркера остаются в global_position
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6278 / 3002 / 1051
Регистрация: 01.06.2021
Сообщений: 11,228
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
Ответ Создать тему
Новые блоги и статьи
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru