Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在SFML中移动球_C++_Sfml_Pong - Fatal编程技术网

C++ 在SFML中移动球

C++ 在SFML中移动球,c++,sfml,pong,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

我正在用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);
}
void ball_特征(sf::长方形球,sf::长方形左桨)
{
双球速度=5;
内倾角=90;
//比例X和Y将给出角度
双刻度=cos(角度);

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


你必须用弧度来表示正反函数。

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


你必须使用弧度来表示正反函数。

不确定这是否是唯一的问题,但C
cos
sin
函数采用弧度,而不是度。在堆栈溢出时,你将答案标记为已接受,而不是用“已解决”编辑问题的标题:)不确定这是否是唯一的问题,但C
cos
sin
函数采用弧度,而不是度。在堆栈溢出时,您将答案标记为已接受,而不是用“已解决”编辑问题的标题:)我的错误。即使我将时钟声明为全局时钟,也不会非常接近0?是的,但不会是0.0000000000000000000。顺便说一下,您可以设置fr使用呈现Screen类的方法的setFrameRate与速率相同。示例:Window.setFrameRate(60);谢谢!你看到我能对数学逻辑做些什么改进吗?我只是想让球现在就移动。正如我所看到的,这已经足够满足你的目的了。我的错误。即使我宣布时钟为全局时钟,它仍然非常接近于0?是的,但它不会是0.0000000000000000000000000000000。顺便说一句,你可以将帧速率设置为w使用setFrameRate渲染Screen类的方法。例如:Window.setFrameRate(60);谢谢!你看到我可以对数学逻辑做些什么改进吗?我只是想让球现在就移动。正如我所看到的,这就足以满足你的目的了。