在SFML中移动球

时间:2016-02-28 22:14:43

标签: c++ sfml pong

我正在使用SFML打乒乓球,球是一个正方形。我查看了教程,由于某种原因,我无法让我的球移动。我使用cout语句来检查球的位置,但它只输出其初始位置。我怀疑我的数学有问题......但球应该移动。

void ball_traits(sf::RectangleShape ball, sf::RectangleShape leftPaddle)
{
    double ballSpeed = 5;
    int angle = 90;

    //Scale X and Y will give the angle
    double scaleX = cos(angle);
    std::cout << scaleX << std::endl;
    double scaleY = sin(angle);
    double velocityX = scaleX * ballSpeed;
    double velocityY = scaleY * ballSpeed;
    //take original position
    double moveX = ball.getPosition().x;
    double moveY = ball.getPosition().y;

    sf::Clock clock;
    double elapsed = clock.restart().asSeconds();

    moveX += velocityX  * elapsed;
    moveY += velocityY * elapsed;
    std::cout << moveX << std::endl;
    std::cout << moveY << std::endl;
    ball.move(moveX,  moveY);
}

我只是想朝着正确的方向前进。这是我的第一个游戏,我的c ++技能有点生疏。 [更新]我忘了通过引用(脸部手掌)传递对象。

1 个答案:

答案 0 :(得分:2)

我认为经过的时间非常接近于零。它是零。是。 您应该将clock声明为全局变量。

你必须使用radian作为sin和cos函数。