SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Взаемодействие с объектами на карте.
Помечено: Взаемодействие, на карте, с объектами
В этой теме 8 ответов, 2 участника, последнее обновление KindRedSand 5 года/лет, 8 мес. назад.
-
АвторСообщения
-
Собственно имею изометрическую карту, на ней позначил объекты в Tile Map Editor. Затем пытаюсь их считать, код взял из 22 урока, типо такого.
C++1234567891011for (int i = 0; i < obj.size(); i++){if (getRect().intersects(obj[i].rect)){if (obj[i].name == "solid")cout << "solid" << endl;if (obj[i].name == "grass")cout << "grass" << endl;}}Но когда персонажем я забегаю в область объекта ничего не происходит, а если персонажа сразу помещать sprite.setPosition в зону объекта “grass” или “solid”, то он его определяет, но как бы самого столкновения не просиходит и тогда вообще куда бы я не побежал везде будет объект “grass” или “solid”.
Учти что для использования изомтерии тебе придётся делать имплементацию для этого. Столкновения не происходит ибо проверка вида сбоку и сверху НЕ подходит для изометрии: Картинка
да, я понял уже, и как это сделать лучше, пересечение получается надо делать не просто для двух прямоугольников, а для прямоугольника и прямоугольника под углом (параллелолграмма типо), пытался сделать через пересечение отрезков, но получилось не совсем то что ожидалось..
У тебя только два варианта – либо просчитывать всю коллизию в одной плоскости и под одним углом, либо делать лоигку столкновений основываясь на SAT (Separated Axis Theorem aka Теорема разделённых осей кординат). В последнем – все прямоугольники будут заменены на вектора точек описывающих контур, но его беда в том что он не может просчитывать поднутрения у контура (Т.е. если одна из точек окажется внутри контура – коллизия будет просчитыватся через соседние в списке точки – ушедшая во внутрь просто выпадает.) Box2D использует именно этот способ просчёта столкновений и нахождения Minimal Translation Vector (Минимальный вектор смещения для вывода одного контура из другого по направлению вектора нормали (Перпендекуляр к отрезку))
Т.е вы советуете использовать Box2D? Я уже пытался, но у меня не получилось. Я пробовал какбы рисовать по 4 точкам эти объекты и персонажа но пересечения у меня никак не получалось сделать, можете помочь с этим, вам можно куда-то в скайп или на почту написать?
Лучше пишите мне через этот сервер дискорда: https://discord.gg/55Zud5 Можно прямо из браузера работать
Вам просто нужно указывать всё без поворотов самой изометрии (Т.е. просчёт коллизии должен быть в обычной плоскости, а уже рендер – в изометрии)Мне пишет что “Приглашение истекло или содержит ошибку.”
Хм, тогда вот
https://discord.gg/jTpSQBn -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.