Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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++ 如何将精灵的位置设置为屏幕中心_C++_Sfml - Fatal编程技术网

C++ 如何将精灵的位置设置为屏幕中心

C++ 如何将精灵的位置设置为屏幕中心,c++,sfml,C++,Sfml,我有一些我一直在做的乒乓球游戏的代码: 代码示例显示,当球碰到窗口底部时,球将重置到窗口的中间。我试图实现的是,我希望能够添加一些代码,这样,如果球碰到窗口顶部,球将重置回中间。 有人能帮我吗 //... // IF BALL GETS PAST PLAYER PADDLE AND TOUCHES BOTTOM OF SCREEN if (GetPosition().y - GetHeight()/2 <= 0) { _angle = 180 - _angle; move

我有一些我一直在做的乒乓球游戏的代码: 代码示例显示,当球碰到窗口底部时,球将重置到窗口的中间。我试图实现的是,我希望能够添加一些代码,这样,如果球碰到窗口顶部,球将重置回中间。 有人能帮我吗

//...

// IF BALL GETS PAST PLAYER PADDLE AND TOUCHES BOTTOM OF SCREEN
if (GetPosition().y - GetHeight()/2 <= 0)
{
    _angle = 180 - _angle;
    moveByY = -moveByY;
}

if (GetPosition().y + GetHeight()/2 + moveByY >= Game::SCREEN_HEIGHT)
{
    // RESET BALL TO MIDDLE OF SCREEN AND RESET TIMER TO 0
    GetSprite().SetPosition(Game::SCREEN_WIDTH/2, Game::SCREEN_HEIGHT/2);
    _angle = (float)sf::Randomizer::Random(0,360);
    _velocity = 220.0f;
    _elapsedTimeSinceStart = 0.0f;
}

//...
/。。。
//若球越过球员的球拍并触到屏幕底部
if(GetPosition().y-GetHeight()/2=Game::SCREEN\u HEIGHT)
{
//将球重置到屏幕中间,并将计时器重置为0
GetSprite().SetPosition(游戏:屏幕宽度/2,游戏:屏幕高度/2);
_角度=(浮点)sf::随机化器::随机(0360);
_速度=220.0f;
_elapsedTimeSinceStart=0.0f;
}
//...

我解决了这个问题,添加了更多的条件语句来检查边界,如果球击中顶部,则将球重置到屏幕中间

我忘了提到我的乒乓球游戏是垂直的,对手的球拍在窗口的顶部,而球员的球拍在窗口的底部。我弄明白了,只是再次复制了代码,删除了反弹球的线条。我现在正在设置边界,这样桨叶就不会继续超出窗口边界…我不确定我是否清楚这里的问题,问题究竟在哪里,它现在正在做什么,你不想它做?@ USE1283674没有直接关系到这个问题,但是你应该考虑把你的SFML版本从1。x升级到2.1。SFML1.x不再维护了,而且有点问题。在您的答案旁边应该有一个复选框-您可以将其标记为已回答。好的,我忘了这么做-谢谢