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

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

19.08.2024, 10:17. Показов 9121. Ответов 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,603
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,603
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,603
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,603
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,603
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,603
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,603
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,603
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,603
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
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru