Взаимодействие с картой

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

В этой теме 2 ответа, 2 участника, последнее обновление  Maksim 2 мес., 2 нед. назад.

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

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

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

    Репутация:0

    Почему, когда персонаж идёт вправо и вниз написано  w  и h, а вверх и влево – размер тайла?

     

     

    #4676

    tobidashi
    Участник
    Сообщений:15

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

    Репутация:7

    Всё зависит от размеров прямоугольника персонажа, размеров тайла карты и направления столкновения. Допустим, персонаж столкнулся с тайлом карты при движении слева направо. Тогда он немного “продавит” этот тайл и должен будет оттолкнуться от него влево. Мы в коде должны сами прописать координату, в которой он окажется после столкновения, а эта координата как раз определяется размерами прямоугольника персонажа и тайлов карты. А именно, персонаж после столкновения должен вплотную прилегать к тайлу карты, с которым он столкнулся, отсюда можно найти координаты персонажа после коллизии. Если персонаж двигался слева направо, то после столкновения нужно от левого края прямоугольника карты  отступить влево ширину персонажа, тогда персонаж будет стоять как раз вплотную слева от прямоугольника. А если персонаж двигался справа налево, то к левому краю прямоугольника карты нужно прибавить ширину тайла карты, тогда персонаж окажется как раз вплотную справа от него. Проще всего это понять, если на бумаге схематично нарисовать кусочек карты и вручную промоделировать коллизии персонажа с тайлами карты по всем направлениям (т.е., просто по шагам проследить, как выполнятеся функция interactionWithMap(), чему равны в момент столкновения переменные i и j и т. д.), тогда станет ясно, на какое расстояние нужно его сдвигать.

    #4679

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

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

    Репутация:0

    Все понятно, спасибо

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

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