Взаемодействие с объектами на карте.

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Взаемодействие с объектами на карте.

В этой теме 8 ответов, 2 участника, последнее обновление  KindRedSand 6 года/лет, 6 мес. назад.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #4880

    Azazel-San
    Участник
    Сообщений:4

    Зарегистрирован:
    28.08.2017

    Репутация:0

    Собственно имею изометрическую карту, на ней позначил объекты в Tile Map Editor. Затем пытаюсь их считать, код взял из 22 урока, типо такого.

    Но когда персонажем я забегаю в область объекта ничего не происходит, а если персонажа сразу помещать sprite.setPosition в зону объекта “grass” или “solid”, то он его определяет, но как бы самого столкновения не просиходит и тогда вообще куда бы я не побежал везде будет объект “grass” или “solid”.

    Пример моей карты.

    Весь код.

    #4881

    Azazel-San
    Участник
    Сообщений:4

    Зарегистрирован:
    28.08.2017

    Репутация:0
    #4888

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Учти что для использования изомтерии тебе придётся делать имплементацию для этого. Столкновения не происходит ибо проверка вида сбоку и сверху НЕ подходит для изометрии: Картинка

    #4890

    Azazel-San
    Участник
    Сообщений:4

    Зарегистрирован:
    28.08.2017

    Репутация:0

    да, я понял уже, и как это сделать лучше, пересечение получается надо делать не просто для двух прямоугольников, а для прямоугольника и прямоугольника под углом (параллелолграмма типо), пытался сделать через пересечение отрезков, но получилось не совсем то что ожидалось..

    #4893

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    У тебя только два варианта – либо просчитывать всю коллизию в одной плоскости и под одним углом, либо делать лоигку столкновений основываясь на SAT (Separated Axis Theorem aka Теорема разделённых осей кординат). В последнем – все прямоугольники будут заменены на вектора точек описывающих контур, но его беда в том что он не может просчитывать поднутрения у контура (Т.е. если одна из точек окажется внутри контура – коллизия будет просчитыватся через соседние в списке точки – ушедшая во внутрь просто выпадает.) Box2D использует именно этот способ просчёта столкновений и нахождения Minimal Translation Vector (Минимальный вектор смещения для вывода одного контура из другого по направлению вектора нормали (Перпендекуляр к отрезку))

    #4894

    Azazel-San
    Участник
    Сообщений:4

    Зарегистрирован:
    28.08.2017

    Репутация:0

    Т.е вы советуете использовать Box2D? Я уже пытался, но у меня не получилось. Я пробовал какбы рисовать по 4 точкам эти объекты и персонажа но пересечения у меня никак не получалось сделать, можете помочь с этим, вам можно куда-то в скайп или на почту написать?

    #4897

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Лучше пишите мне через этот сервер дискорда: https://discord.gg/55Zud5 Можно прямо из браузера работать
    Вам просто нужно указывать всё без поворотов самой изометрии (Т.е. просчёт коллизии должен быть в обычной плоскости, а уже рендер – в изометрии)

    #4900

    Azazel-San
    Участник
    Сообщений:4

    Зарегистрирован:
    28.08.2017

    Репутация:0

    Мне пишет что “Приглашение истекло или содержит ошибку.”

    #4901

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Хм, тогда вот
    https://discord.gg/jTpSQBn

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)

Для ответа в этой теме необходимо авторизоваться.