Созданные ответы форума
-
АвторСообщения
-
О, теперь понятно. Большое спасибо за помощь!
Размеры задаю в константах X_SPR_PLAYER и Y_SPR_PLAYER в файле const.h и передаю их в конструкторе
Сорри, на работе сейчас, не могу посмотреть код и запустить.
Уже нет необходимости. Я решил проблему. И да, коллизия использует прямоугольник спрайта, как оказалось, то что верхняя часть не взаимодействует ни с чем являлось побочным эффектом от общей проблеммы
Спасибо за советы. Проблема решена путём изменения размеров в функции getRect() и подстановки размеров из этой функции в проверку столкновения.
Получилось:
C++12345678910111213141516if (dX < 0){x = obj[i].rect.left + obj[i].rect.width;}if (dX > 0){x = obj[i].rect.left - 5;}if (dY > 0){y = obj[i].rect.top - 25;}if (dY < 0){y = obj[i].rect.top + obj[i].rect.height;}C++1return FloatRect(x, y, 5, 25);Заметил странную вещь: при размерах 10х10 спрайт придвигается почти вплотную
Вложения:
You must be logged in to view attached files.Странно, что после подгона размера объекта под размер спрайта, ничего не изменилось
Смог уменьшить смещение поставив кадры анимации вплотную и изменив соответственно размер спрайта. Но, как видно на первом скриншоте, персонаж всё равно не доходит, хотя сам спрайт вроде не мешает. На втором же скриншоте: игрок получает урон только если сам объект 32х32 пересекает камень, а если спрайт пересекает, а нижняя его часть, которая находится в объекте нет, то как на скрине, урон не проходит.
Вложения:
You must be logged in to view attached files.Большое спасибо. Сегодня попробую
Проблему с получением урона решил. Оказалось у меня тип переменной health был int вместо double либо float. Проблема со смещением до сих пор актуальна
-
АвторСообщения