所以我在这里有这段代码:

void Star::createStar(){
sf::CircleShape star1(r,50);
star1.setPosition(x,y);
sf::Texture* t = CreateTexture(256,256);
star1.setTexture(t,false);
star=star1;
std::cout << "Done!"<<std::endl;
}
void Star::update(){
star.setOrigin(x-(.5*r),y-(.5*r));

star.rotate(0.01);
}

并且我希望恒星绕其中心旋转,但是我可能做的计算有误,但是即使我没有声明中心,恒星也围绕相同的点旋转。

编辑::我修复了star.setOrigin()应该具有参数r,r!

最佳答案

这是正确的代码

void Star::createStar(){
sf::CircleShape star1(r,50);
star1.setPosition(x,y);
sf::Texture* t = CreateTexture(256,256);
star1.setTexture(t,false);
star=star1;
std::cout << "Done!"<<std::endl;
}
void Star::update(){
//star.setOrigin(x-(.5*r),y-(.5*r));
//no need to set origin
star.rotate(0.01);
}

10-08 11:52