Я делаю в своем проекте систему обнаружения столкновений, и мне нужно обнаруживать столкновения на повернутой текстуре.
Для обнаружения столкновений вокруг основной текстуры персонажа ( для обнаружения столкновения влево, вправо, вверх и вниз), а sf::FloatRect
создается с использованием положения текстуры и ее размеров. Если один из 4 sf::FloatRect
объектов вокруг основной текстуры пересекается с другим sf::FloatRect
, обнаруживается столкновение.
Проблема возникает, когда текстура, на которой я хочу обнаружить столкновение, поворачивается. sf::FloatRect
не вращается.
Есть ли способ его повернуть? Или есть альтернатива в этой ситуации? Я просмотрел онлайн-документацию по SFML и не нашел способа повернуть его.
RectangleShape collisionArea(Vector2f(pos[2], pos[3]));
collisionArea.setPosition(pos[0], pos[1]);
collisionArea.setRotation(rotation);
FloatRect box = collisionArea.getGlobalBounds();
FloatRect areaLeft(position.x - movementSpeed, position.y, movementSpeed, textureDimentions.y);
FloatRect areaRight(position.x + textureDimentions.x, position.y, movementSpeed, textureDimentions.y);
FloatRect areaUp(position.x, position.y - movementSpeed, textureDimentions.x, movementSpeed);
FloatRect areaDown(position.x, position.y + textureDimentions.y, textureDimentions.x, movementSpeed);
if(box.intersects(areaLeft))
{
collidingMap[0] = true;
}
if(box.intersects(areaRight))
{
collidingMap[1] = true;
}
if(box.intersects(areaUp))
{
collidingMap[2] = true;
}
if(box.intersects(areaDown))
{
collidingMap[3] = true;
}