当我开始游戏时fps大约是60但是在按住“WITH”按钮时我的fps减少到30.On释放那个按钮它再次变为60.这是因为代码行:model-> Load(“image / characters.png”, REC)。
如果我对这个“//”字符的评论行将会以60fps顺利移动,但不会转到顶部。
Entity *player;
void heroMovement()
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
sf::IntRect top(32, 224, 32, 32);
this->player->Load("img/characters.png", top);
calculateTileAnimation(0, 32, 64, top , this->player);
velocity.y -= character_speed;
}
}
void calculateTileAnimation(int firstTile , int sizeTile , int
lastTile,sf::IntRect rec , Entity *model)
{
model->Load("img/characters.png", rec); // This line decreasing fps
if (clock.getElapsedTime().asSeconds() < 0.3f)
{
rec.left += sizeTile;
if (rec.left == lastTile)
rec.left = firstTile;
clock.restart();
}
}
void Load(std::string filename, sf::IntRect rec)
{
this->texture->loadFromFile(filename, rec);
this->setTexture(*this->texture);
}
需要修理它,按住按钮“w”字符应该打开顶部并以60fps移动。
您在每次击键时从磁盘加载纹理。别。在游戏开始时从磁盘加载纹理(您可能知道那些加载屏幕)并将它们存储在变量中。
然后使用它们,例如在setTexture
方法中。