Преобразования igrnores sf :: Происхождение Sprite - PullRequest
0 голосов
/ 22 апреля 2020

Преобразование спрайта в 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);
}

Заранее спасибо за помощь

...