【发布时间】:2020-08-05 16:14:09
【问题描述】:
在 SFML 中转换一个 sprite,并不认为它是新的来源。
在我的例子中,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);
}
提前感谢您的帮助
【问题讨论】:
-
请出示代码。