我正在使用SFML 2.1。我的程序是一个弹跳球的简单程序。当我向右移动时,球的动画帧的循环就好了,但是当source.y = 0并且我向左移动球时,它将不会循环。谁能明白为什么?
tBall是完整精灵表的纹理。 Frame.x和frame.y是我从精灵表中获取的每个帧的大小。而source.x和source.y是精灵表中的坐标。
frameCounter += frameSpeed * frameClock.restart().asSeconds();
if (frameCounter >= switchFrame)
{
frameCounter = 0;
//Moving Right
if (velocity.x < 0)
source.y += (frame.y * Right);
//Loop
if (source.y > tBall.getSize().y - frame.y)
source.y = 0;
//Moving Left
if (velocity.x > 0)
source.y += (frame.y * Left);
//Loop
if (source.y < 0)
source.y = (tBall.getSize().y - frame.y);
}
std::cout << source.y << std::endl;
ball.setTextureRect(sf::IntRect(source.x, source.y, frame.x, frame.y));
对不起,如果这是一个愚蠢的忽视。 提前谢谢!
PS。这是我的第一个问题,所以如果我写得太多,太少,太模糊等,请评论。
编辑:左= 1,右= -1