SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Препятствия на карте
В этой теме 7 ответов, 4 участника, последнее обновление Павел Букреев 8 года/лет назад.
-
АвторСообщения
-
Всем привет. При изучении урока о взаимодействии с картой возник такой вопрос. Мой перс имеет высоту 2 клетки и при прохождении рядом с препятствием (камнем), упирается в него головой. Можно ли как то сделать так, что бы верхняя часть туловища проходила сквозь препятствия, а ноги нет?
Вложения:
You must be logged in to view attached files.привет, можно сделать. надо при этом дополнительно проверить какая часть персонажа сталкивается с камнем.
вобще говоря можно, скорее всего, сократить высоту персонажа навсегда или на время проверки столкновения с препятствием.если не разобрался – пиши ещё и выкладывай куски кода)
Сделай хитбокс, на пол персонажа и проверяй столкновение по хитбоксу а не по самой картинке.
как сделать так, чтобы игрок толкал этот камень ?
при столкновении с камнем его можно передвинуть на одну позицию (так же как собирали камни в уроке, только плюс перерисуем камень в будущей его позиции после сдвига). позицию узнать в зависимости от того откуда(с какои стороны) зашел игрок.
C++1234567891011121314151617for (it = entities.begin(); it != entities.end(); it++)а{if ((*it)->getRect().intersects(p.getRect())){if ((*it)->name == "EasyEnemy"){if (p.dx < 0)(*it)->x = (*it)->x - ((*it)->w) / 32;if (p.dx > 0)(*it)->x = (*it)->x + ((*it)->w) / 32;if (p.dy > 0)(*it)->y = (*it)->y + ((*it)->w) / 32;if (p.dy < 0)(*it)->y = (*it)->y - ((*it)->w) / 32;}}}если так передвигать, то пропадает взаимодействие камня с картой, то есть он перерисовывается за стеной
добавь проверку чтобы не перерисовывался за границей карты. если серьезней подойти, то можно и класс камня сделать и добавить экземпляры на карту.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.