Преобразование спрайта в SFML без учета его нового происхождения.
В моем случае sf :: Sprite вращается вокруг оси, которая находится в левом верхнем углу ({0,0}), независимо от его происхождение. Установка нового источника с помощью .setOrigin () ранее не имеет никакого эффекта.
Я уверен, что спрайт получает правильную исходную позицию, которая является центром прямоугольника.
Мой код:
В каждом из моих конструкторов класса Card я устанавливаю источник моего спрайта.
card_sprite.setOrigin(Card::get_default_single_card_size().x*Game::get_scale()/2,Card::get_default_single_card_size().y*Game::get_scale()/2);
А затем в своем классе Deck, который ведет себя как std :: stack of Cards, я использую функцию:
void Deck::push(const Card& crd)
{
push_back(crd);
..//
std::default_random_engine generator;
std::uniform_real_distribution<float> distributor(0,360);
top().setRotation(distributor(generator));
}
Card :: setRotaion () выглядит следующим образом (все еще вращает карту вокруг левого верхнего угла):
void Card::setRotation(float angle)
{
card_sprite.setRotation(angle);
}
Заранее спасибо за помощь